圣啦啦 @ 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 感谢各位大神们对我的帮助,请受我一拜...