UvaLive-4254-Processor
2013-03-31 14:27
330 查看
用二分法可以做~
代码:
代码:
#include<cstdio> #include<queue> #include<iostream> #include<algorithm> #include<queue> using namespace std; struct node { int l,r,w; bool operator < (const node &a)const { return r>a.r; } }a[10001]; int n; priority_queue<node> q; bool cmp(node a,node b) { return a.l<b.l; } bool check(int mid) { int i=0,j=0; while(!q.empty()) q.pop(); while(1) { while(i<n&&a[i].l<=j) q.push(a[i++]); int now=mid; while(now!=0&&!q.empty()) { node ita=q.top(); q.pop(); int m=min(now,ita.w); now-=m; ita.w-=m; if(ita.w!=0) q.push(ita); } j++; if(!q.empty()&&q.top().r<=j) return false; if(q.empty()&&i==n) return true; } } int main() { int cas; scanf("%d",&cas); while(cas--) { scanf("%d",&n); int sum=0; for(int i=0;i<n;i++) { scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].w); sum+=a[i].w; } sort(a,a+n,cmp); int l=0,r=sum,ans=sum; while(l<=r) { int mid=(l+r)>>1; if(check(mid)) { ans=mid; r=mid-1; } else l=mid+1; } printf("%d\n",ans); } return 0; }
相关文章推荐
- UVALive - 4254 Processor
- UVALive - 4254 Processor 二分+优先队列
- UvaLive 4254 Processor 优先队列
- UVaLive 4254 Processor (二分+优先队列)
- UVA 1422 (LA 4254)- Processor
- uvalive 4254(二分)
- uvalive 4254(二分+模拟)
- uvalive 4254 Processor处理器 (二分模拟+贪心)
- uvalive4254(贪心+优先队列)
- UVALive 4254
- uva live 3516 - Exploring Pyramids
- UVALive - 4123 && ALGO-165 Glenbow Museum(排列组合)
- Uvalive 7150 Amalgamated Artichokes
- UVALive 5903 Piece it together
- UVALive 3635 Pie
- [UVA Live 12931 Common Area]扫描线
- uvalive 4613
- UVALive 7275 Dice Cup (水题)
- UVALive 7279 Sheldon Numbers
- UVaLive 3635 Pie (二分)