样例过了,为什么不行?

P1478 陶陶摘苹果(升级版)

昊轩啥也不是 @ 2021-08-20 14:51:15

因为上一个帖子被刷下去了就来再发一次

#include<bits/stdc++.h>
using namespace std;
int main(){
int n,s,i,j,t=0,a,b,x[5005],y[5005],ans=0,sum[5005];
    cin>>n>>s;
    cin>>a>>b;
    for(i=0;i<n;i++)
    cin>>x[i]>>y[i];
for(i=0;i<=n;i++){
for(j=i+1;j<=n;j++){
if(x[i]>x[j]){
swap(x[i],x[j]);
swap(y[i],y[j]);
}
}
}
while(x[t]<=a+b){
    sum[t]=y[t];
        t++;
    }
    t=0;
    while(s>=0){
        ans++;
    s=s-sum[t];
    t++;
    }
    cout<<ans;
    return 0;
} 

by May_wind @ 2021-08-20 14:53:59

@昊轩啥也不是 码风清奇

应该按照摘苹果的力气对苹果排序吧……按高度排序肯定不对……


by May_wind @ 2021-08-20 14:54:54

另外这么简单的题不建议发讨论,建议自己解决


by hzlcdkslds @ 2021-08-20 14:58:52

#include<bits/stdc++.h>
using namespace std;
int main(){
int n,s,i,j,a,b,x[5005],y[5005],ans=0;
    cin>>n>>s;
    cin>>a>>b;
    for(i=0;i<n;i++)
        cin>>x[i]>>y[i];
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            if(y[i]<y[j]){
                swap(x[i],x[j]);
                swap(y[i],y[j]);
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        if(x[i]<=a+b&&s>=y[i])
        {
            ans++;
            s-=y[i];
        }
    }
    cout<<ans;
    return 0;
}

仅供参考


by 昊轩啥也不是 @ 2021-08-20 14:59:01

@May_wind 谢谢,我知道了


by hzlcdkslds @ 2021-08-20 14:59:09

@昊轩啥也不是


by 昊轩啥也不是 @ 2021-08-20 15:02:12

@hsladafjsk 谢谢


|