BZOJ 1029
确实是水题,由于人弱想了半天.
这题我以前好像做到过T^T...
原来贪心就可以了.据gty说,贪心策略:
能加则加
不能加尽量省出时间来.
感觉好奇葩,不知道为什么是对的...感觉正确性并不显然...先这么写了.
#include <cstdio> #include <ext/pb_ds/priority_queue.hpp> #include <algorithm> __gnu_pbds::priority_queue<int,std::less<int>> q; int n,m,i,j,k; inline int read(){//hzwer read int x=0,f=1;char ch=getchar(); while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} return x*f; } struct Q{ int e,t; } s[200000]; bool c(const Q& a,const Q& b){ return a.e<b.e; } int main(){ n=read(); for(i=0;i<n;++i) s[i].t=read(),s[i].e=read(); std::sort(s,s+n,c); for(i=0;i<n;++i){ if(j+s[i].t<=s[i].e){ ++k; j+=s[i].t; q.push(s[i].t); }else{ m=q.top(); if(m>s[i].t){ q.pop(); q.push(s[i].t); j=j-m+s[i].t; } } } printf("%d\n",k); return 0; }
STL玩玩就水过了.
时间: 2024-10-10 23:56:08