求大佬帮忙看一下,下面的代码哪里错了?

P1478 陶陶摘苹果(升级版)

圣啦啦 @ 2020-02-11 20:37:47

#include<iostream>
#include<algorithm>
using namespace std;
struct node{
    int x;
    int y;
}a[5005];

bool cmp(node a,node b){
    return a.y<b.y;
}

int main(){
    int n,s;
    cin>>n>>s;
    int c,b;
    cin>>c>>b;
    int sum=c+b;
    for(int i=0;i<n;i++){
        cin>>a[i].x>>a[i].y;
    }
    sort(a,a+n,cmp);
    int tot=0;
    for(int i=0;i<n;i++){
        if(s<0){
            break;
        }
        if(s>=0&&sum>=a[i].x){
            tot++;
            s-=a[i].y;
        }
    }
    cout<<tot;
    return 0;
}

by 圣啦啦 @ 2020-02-11 20:42:33

急急急,求救大神!


by 夜枭只会舔fufu @ 2020-02-11 20:54:36

我知道了,

if(s<0)
{
    break;
}

break前面应该减一


by 夜枭只会舔fufu @ 2020-02-11 20:54:45

tot


by 夜枭只会舔fufu @ 2020-02-11 20:56:34

也就是你体力上一次减到负的了,所以上次摘苹果无效,tot--;


by yangrunze @ 2020-02-11 20:57:39

@圣啦啦 判断条件写错了,因为减完了a[i].y之前判断的话可能之前>0,减完就<0了

所以把你的if(s>=0&&sum>=a[i].x)改成if(s>=a[i].y&&sum>=a[i].x)试试


by 夜枭只会舔fufu @ 2020-02-11 21:00:00

@圣啦啦

if(s>0)
{
    tot--;
    break;
}

QAQ


by BiaxialRay @ 2020-02-11 21:18:47

这题没必要用到结构体排序⑧,你把大于a+b的去掉就行了


by BiaxialRay @ 2020-02-11 21:20:50

高度大于sum的不存入数组


by 圣啦啦 @ 2020-02-11 22:23:48

@yangrunze 谢谢,按照您的改法通过了!


by 圣啦啦 @ 2020-02-11 22:24:54

@片风_渊祭 @取名是不可能 @yangrunze 感谢各位大神们对我的帮助,请受我一拜...


| 下一页