感觉没毛病,40分,求大佬指点

P1478 陶陶摘苹果(升级版)

QLUzongyuxing @ 2022-01-30 10:39:31

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

by Natori @ 2022-01-30 11:02:00

@QLUzongyuxing

首先你可以在输入时直接判断哪些苹果能摘,只把能摘的放进数组;

还有就是排序建议直接sort;

然后x、y数组开大点,n<=5000。


by Natori @ 2022-01-30 11:05:39

@QLUzongyuxing 还有有一个致命的问题是你在循环里输出答案。

有一个数据是这样的:

0 0
0 0

答案给的是:

0

但你没有输出。


by Natori @ 2022-01-30 11:07:53

@QLUzongyuxing

建议 s<=0 时直接break,然后输出c。


by QLUzongyuxing @ 2022-01-30 13:39:05

@chenyiheng 自己改了一下,AC了,十分感谢!!!


|