X2H_tato @ 2020-12-22 20:01:51
#include <iostream>
#include <algorithm>
using namespace std;
int n,s;
int m,b;
struct make{
int x,y;
}a[5005];
int cmp (make i,make j)
{
if(i.y!=j.y) return i.y<j.y;//需花的力气小的放在前面
return i.x<j.x;//如果力气花的一样就看谁更矮
}
int main()
{
cin>>n>>s>>m>>b;
for(int i=1;i<=n;i++)
cin>>a[i].x>>a[i].y;
sort(a+1,a+n+1,cmp);//排序
int ans=0;
for(int i=1;i<=n;i++)
{
if(m+b>a[i].x&&s-a[i].y>=0)//他够得着并且力气不会花完
{
s-=a[i].y;//把要的力气减了
ans++;//答案+1
}
}
cout <<ans<<" "<< endl;
return 0;
}
by X2H_tato @ 2020-12-22 20:02:09
@max0810
by Hanghang @ 2020-12-22 20:04:48
@高高苦力怕
这不是哪个巨佬吗?
by X2H_tato @ 2020-12-22 20:11:27
@Hanghang ?您也在啊,帮我看看吧,刚学结构体排序
by Hanghang @ 2020-12-22 20:14:06
@高高苦力怕
有事,先下了
by X2H_tato @ 2020-12-22 20:15:29
@Hanghang 好吧
by Miquella @ 2020-12-22 20:33:34
我觉得应该是没考虑力气<0的情况,如果有这个情况直接break掉,然后如果高度大于>陶陶+椅子的高度,直接continue掉,这是我的做法...
by X2H_tato @ 2020-12-25 21:23:33
@杨晨毅 谢谢,我
m+b>a[i].x
应该改成
m+b>=a[i].x
谢谢提醒
by Miquella @ 2020-12-25 21:54:30
@高高苦力怕 没事,做对就行