ILXC__SL @ 2018-12-22 17:13:59
using namespace std;
long long n,a,s,b; struct apple { long long high; long long liqi; }x[99999];
bool cpr(apple x,apple y) { if(x.liqi!=y.liqi) return x.liqi<y.liqi; }
int main()
{
scanf("%lld%lld%lld%lld",&n,&s,&a,&b);
a+=b;
for(int i=1;i<=n;i++)
scanf("%lld%lld",&x[i].high,&x[i].liqi);
sort(x+1,x+1+n,cpr);
long long S=0;
for(int i=1;i<=n;i++)
{
if(s-x[i].liqi>=0 && x[i].high<=a)
{
S++;
s-=x[i].liqi;
}
if(s==0)
break;
}
//for(int i=1;i<=n;i++)
//printf("%lld %lld\n",x[i].high,x[i].liqi);
printf("%lld",S);
return 0;
}
by ILXC__SL @ 2018-12-22 17:15:30
#include<bits/stdc++.h>
using namespace std;
long long n,a,s,b;
struct apple
{
long long high;
long long liqi;
}x[99999];
bool cpr(apple x,apple y)
{
if(x.liqi!=y.liqi)
return x.liqi<y.liqi;
}
int main()
{
scanf("%lld%lld%lld%lld",&n,&s,&a,&b);
a+=b;
for(int i=1;i<=n;i++)
scanf("%lld%lld",&x[i].high,&x[i].liqi);
sort(x+1,x+1+n,cpr);
long long S=0;
for(int i=1;i<=n;i++)
{
if(s-x[i].liqi>=0 && x[i].high<=a)
{
S++;
s-=x[i].liqi;
}
if(s==0)
break;
}
//for(int i=1;i<=n;i++)
//printf("%lld %lld\n",x[i].high,x[i].liqi);
printf("%lld",S);
return 0;
}
对不起发错了
by 自闭头铁娃 @ 2018-12-22 17:29:43
@ILXC 把long long都改成int,数组x开小点,数据里的n小于等于5000,开个10001就够了,然后就可以过了
by 自闭头铁娃 @ 2018-12-22 17:31:55
@ILXC 诶,等等,我搞错了一点
by 自闭头铁娃 @ 2018-12-22 17:32:14
等下,我把修改的代码发给你
by 自闭头铁娃 @ 2018-12-22 17:35:05
#include<bits/stdc++.h>
using namespace std;
int n,a,s,b;
struct apple
{
int high;//高度
int liqi;//力气
}x[10001];
int cpr(apple A,apple B)//返回值函数用int比较好
{
return A.liqi<B.liqi;//直接按力气大小排序
}
int main()
{
scanf("%d%d%d%d",&n,&s,&a,&b);
a+=b;
for(int i=1;i<=n;i++) scanf("%d%d",&x[i].high,&x[i].liqi);
sort(x+1,x+1+n,cpr);
long long S=0;
for(int i=1;i<=n;i++)
{
if(s-x[i].liqi>=0 && x[i].high<=a)
{
S++;
s-=x[i].liqi;
}
if(s==0)
break;
}
//for(int i=1;i<=n;i++)
//printf("%lld %lld\n",x[i].high,x[i].liqi);
printf("%d",S);
return 0;
}
by ILXC__SL @ 2018-12-22 17:36:05
谢谢!
by うちはサスケ @ 2018-12-22 17:50:46
额
by cancanAce @ 2018-12-22 18:08:57
using namespace std; int y[5005]; int main() { int n,s,a,b; scanf("%d%d%d%d", &n ,&s, &a ,&b); int cnt = 0; for (int i=1;i<=n;i++) { int xi,yi; scanf("%d%d", &xi ,&yi); if (a+b>=xi) { y[++cnt] = yi; } } sort(y+1, y+1+cnt); int tot = 0; int ans = 0; for (int i=1;i<=cnt;i++) { if (tot + y[i] <= s) {tot += y[i]; ans++;} else break; } printf("%d\n", ans); return 0; }
by cancanAce @ 2018-12-22 18:09:35
using namespace std; int y[5005]; int main() { int n,s,a,b; scanf("%d%d%d%d", &n ,&s, &a ,&b); int cnt = 0; for (int i=1;i<=n;i++) { int xi,yi; scanf("%d%d", &xi ,&yi); if (a+b>=xi) { y[++cnt] = yi; } } sort(y+1, y+1+cnt); int tot = 0; int ans = 0; for (int i=1;i<=cnt;i++) { if (tot + y[i] <= s) {tot += y[i]; ans++;} else break; } printf("%d\n", ans); return 0; }
by cancanAce @ 2018-12-22 18:09:55
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#define ms(i,j) memset(i,j, sizeof i);
using namespace std;
int y[5005];
int main()
{
int n,s,a,b;
scanf("%d%d%d%d", &n ,&s, &a ,&b);
int cnt = 0;
for (int i=1;i<=n;i++)
{
int xi,yi;
scanf("%d%d", &xi ,&yi);
if (a+b>=xi)
{
y[++cnt] = yi;
}
}
sort(y+1, y+1+cnt);
int tot = 0;
int ans = 0;
for (int i=1;i<=cnt;i++)
{
if (tot + y[i] <= s)
{tot += y[i]; ans++;}
else break;
}
printf("%d\n", ans);
return 0;
}