莫名其妙地AC了
查看原帖
莫名其妙地AC了
536337
eb0ycn楼主2024/1/8 18:24

代码第10行,别人都是按 ai+bia_i+b_i 降序来,就我升序,还对了……

#include <bits/stdc++.h>
using namespace std;
int r,n,x,y,cnt,dp[60001],ans;
struct node
{
	int a,b;
}c[101],wx[101];
int k1,k2;
bool cmp1(node p,node q){return p.a<q.a;}
bool cmp2(node p,node q){return p.a+p.b<q.a+q.b;}
int main()
{
	scanf("%d%d",&n,&r);
	for(int i=1;i<=n;++i)
	{
		scanf("%d%d",&x,&y);
		if(y>=0)c[++k1].a=x,c[k1].b=y;
		else wx[++k2].a=x,wx[k2].b=y;
	}
	sort(c+1,c+k1+1,cmp1);
	for(int i=1;i<=k1;++i)
	{
		if(r>=c[i].a)r+=c[i].b,++cnt;
		else break;
	}//此时已经完成了所有能完成的b[i]>=0的工作。
	sort(wx+1,wx+k2+1,cmp2);
	for(int i=1;i<=k2;++i)
	{
		for(int j=r;j>=wx[i].a;--j)
		{
			if(j+wx[i].b>=0)dp[j]=max(dp[j],dp[j+wx[i].b]+1);
		}
	}
	printf("%d",dp[r]+cnt);
	return 0;
}
2024/1/8 18:24
加载中...