求求大佬帮助本蒟蒻!!只有40分

P1478 陶陶摘苹果(升级版)

aespa_karina @ 2022-07-28 16:49:38


#include<iostream> 
using namespace std;
int main(){
    int n,s,a,b,x[1000],y[1000],l;
    cin>>n>>s>>a>>b;
    for(int i=1;i<=n;i++){
        cin>>x[i]>>y[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(y[i]>y[j]){
                swap(y[i],y[j]);
                swap(x[i],x[j]);
            }
        }
    }
    for(int i=1;i<=n;i++){
        if(a+b>=x[i]){
            s=s-y[i];
            l=l+1;
            if(s<=0){
                break;
            }
        }
    }
    cout<<l;
    return 0;
}
```cpp

by L_zaa_L @ 2022-07-28 17:07:30

@Gnaeriselr_74 这是你的代码改之后的代码,你看看

#include<iostream> 
using namespace std;
int n,s,a,b,x[10001],y[10001],l;
int main(){
    cin>>n>>s>>a>>b;
    for(int i=1;i<=n;i++){
        cin>>x[i]>>y[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(y[i]>y[j]){
                swap(y[i],y[j]);
                swap(x[i],x[j]);
            }
        }
    }
    for(int i=1;i<=n;i++){
        if(a+b>=x[i]){
            s=s-y[i];
            if(s<0){
                break;
            }
            l=l+1;
        }
    }
    cout<<l;
    return 0;
}

by YangjinRun @ 2022-07-28 17:09:52

for(int i=1;i<=n;i++){
   if(a+b>=x[i]){
      s=s-y[i];
      l=l+1;
      if(s<=0){
        break;
        }
   }
}

if里的条件再加一个

s-y[i]>=0

气力值还够摘才能摘


by YangjinRun @ 2022-07-28 17:12:22

@Gnaeriselr_74

说明/提示
对于100% 的数据,n≤5000, a\≤50,≤200, s≤1000, xi≤280, yi≤100。

看题目数据大小是个好习惯

数组开小了


by Sunny郭 @ 2022-07-28 17:20:19

有三个问题哦 1,看看满分的数据范围,检查数组开够没有。 2,最后一个循环中关于s判断等于0可不可以要想一下。 3,也是这个循环,检查一下“l=l+1”位置应该放在哪里,是判断再加还是加在判断


by aespa_karina @ 2022-07-28 20:51:41

@YangjinRun 哈哈哈哈哈哈笑死了不过我看了之后恍然大悟


by aespa_karina @ 2022-07-28 20:54:06

@Sunny郭 哦~现在就去改


by aespa_karina @ 2022-07-28 21:22:06

我过啦我过啦感谢大佬们帮助本蒟蒻!!特别感谢@YangjinRun


|