王宏宇11 @ 2019-02-23 18:23:40
一枚真实的萌新,不会用结构体,代码结构体编译不过,不知道为什么,望大佬们看看
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
struct node
{int xi;
int yi;//力气
};
node a[5005];
int main()
{int n,s,h,b;
int sum=0;
cin>>n>>s;
cin>>h>>b;
for(int i=1;i<=n;i++)
cin>>a[i].xi>>a[i].yi;
sort(a+1,a+1+n);//排序
while(s>=0)
{int i=1;
if(h+b>=a[i].xi)
{sum++;
s=s-a[i].yi;//如果可以就减去力气
}
i++;
if(i>n)//力气多了退出
break;
}
cout<<sum;
return 0;
}
by Priori_Incantatem @ 2019-02-23 19:34:19
@王宏宇11 是要交换成 x.yi<y.yi;
by Priori_Incantatem @ 2019-02-23 19:35:04
如果 x.yi>=y.yi;就交换
by csdfret @ 2019-02-23 19:35:11
你数组越界了啊。。。
by 王宏宇11 @ 2019-02-23 19:36:30
@_Wolverine 我刚刚百度了一下,sort函数中如果cmp函数的返回值为1就交换,我想我大概清楚了,谢谢大佬出手相助
by csdfret @ 2019-02-23 19:36:37
i的定义要放循环外。。
by csdfret @ 2019-02-23 19:36:57
每次i都是1啊
by 王宏宇11 @ 2019-02-23 19:38:40
@ 啊,对,忽略了这个,真是抱歉QwQ、谢谢大佬
by 王宏宇11 @ 2019-02-23 19:40:16
@ emmmm,改过之后我的输出结果比样例多1.....
by 王宏宇11 @ 2019-02-23 19:43:48
@ 神奇的是我擅自把sum减去了1居然给我AC了....莫非我哪里多算了一个
by 王宏宇11 @ 2019-02-23 19:44:42
水平太低QwQ,卑微