本文共 654 字,大约阅读时间需要 2 分钟。
—
贪心。已知小X不会往回走。那么一个一个点走过去。
用一个栈Q存小X每个要AK的点的AK时间,然后随时记录Q存的点数。 然后往后走,如果要当前点AK时间不够,往前去掉AK点。(因为一直要走到这嘛)#include#include using namespace std;long long n,ans,top,q[100001],T,s,xx,yy,tn;struct asdf{ long long w,t;} a[100001];bool cmp(asdf aa,asdf bb){ return aa.w T) continue; //如果已经不符合条件了 ++tn; a[tn].w=xx; a[tn].t=yy; } sort(a+1,a+1+tn,cmp); //排序 for(int i=1;i<=tn;++i){ s+=a[i].t+a[i].w-a[i-1].w; //走到当前点并且AK q[++top]=a[i].t; //加入Q while(s>T&&top) //如果不能AK s=s-q[top--]; //去掉,并且使可以到达i ans=max(ans,top); //取最大值 } printf("%lld",ans);}
转载地址:http://pfug.baihongyu.com/