HDU 5859 Captain is coding
来源:互联网 发布:网络流行歌曲2017劲爆 编辑:程序博客网 时间:2024/06/01 16:00
有两场比赛同时开始,一共有
二分完成时间判是否可行.不妨设A的deadline比B的deadline短,对于一次判断内,由于总时间固定,两类任务完成的总时间固定,则可用来练习的时间也固定,首先找到可完成的
收益最大的A类任务,若找不到则在B里找,此时若B类的收益还不如去练习,而且练习时间有剩余的话,就先去练习.A类任务若能做则不需要考虑收益,因为要优先保证A的deadline,先练后练对最优解无影响.
和chk一起做的
看起来很有意思的题, btw,模拟工厂也很有意思
贪心+二分
#include <set>#include <ctime>#include <queue>#include <cstdio>#include <bitset>#include <cctype>#include <bitset>#include <cstdlib>#include <cassert>#include <cstring>#include <iostream>#include <algorithm>#define inf (1<<30)#define INF (1ll<<62)#define fi first#define se second#define rep(x,s,t) for(register int x=s,t_=t;x<t_;++x)#define per(x,s,t) for(register int x=t-1,s_=s;x>=s_;--x)#define travel(x) for(int I=last[x],to;I&&(to=e[I].to);I=e[I].nxt)#define prt(x) cout<<#x<<":"<<x<<" "#define prtn(x) cout<<#x<<":"<<x<<endl#define pb(x) push_back(x)#define hash asfmaljkg#define rank asfjhgskjf#define y1 asggnja#define y2 slfvmusing namespace std;typedef long long ll;typedef pair<int,int> ii;template<class T>void sc(T &x){ int f=1;char c;x=0; while(c=getchar(),c<48)if(c=='-')f=-1; do x=x*10+(c^48); while(c=getchar(),c>47); x*=f;}template<class T>void nt(T x){ if(!x)return; nt(x/10); putchar(x%10+'0');}template<class T>void pt(T x){ if(x<0)putchar('-'),x=-x; if(!x)putchar('0'); else nt(x);}template<class T>void ptn(T x){ pt(x);putchar('\n');}template<class T>void pts(T x){ pt(x);putchar(' ');}template<class T>inline void Max(T &x,T y){if(x<y)x=y;}template<class T>inline void Min(T &x,T y){if(x>y)x=y;}int n,X,Y,Wp,Z;const int maxn=1006;struct node{ int c,d; bool operator <(const node&a)const{ return d<a.d; }}A[2][maxn];int cnt[2],Lim[2];bool cmp(node a,node b){ return a.c<b.c;}int fi,se,pre;void input(){ sc(n);sc(Lim[0]);sc(Lim[1]);sc(Wp);sc(Z); cnt[0]=cnt[1]=0; rep(i,0,n){ int c,d;char s[4]; sc(c);sc(d);scanf("%s",s); if(s[0]=='A')A[0][cnt[0]++]=(node){c,d}; else A[1][cnt[1]++]=(node){c,d}; } fi=Lim[0]>Lim[1]?0:1; se=fi^1;}bool judge(){ int rem=Lim[fi]-n; if(rem<0||cnt[se]>Lim[se])return false; int top=0,tp=0; priority_queue<node>Q; ll tt=0,W=Wp; while(tp<cnt[fi]&&A[fi][tp].c<=W){ Q.push(A[fi][tp]); tp++; } while(top<cnt[se]){ if(A[se][top].c<=W){ W+=A[se][top].d; top++; } else{ if(!Q.empty()&&rem){ node p=Q.top(); if(p.d>=Z){ Q.pop(); W+=p.d; } else{ int tar=tp<cnt[fi]?min(A[se][top].c,A[fi][tp].c):A[se][top].c; int nd=1ll*(tar-W+Z-1)/Z; nd=min(nd,rem); rem-=nd; W+=1ll*Z*nd; tt+=nd-1; } } else if(!Q.empty()){ node p=Q.top();Q.pop(); W+=p.d; } else if(rem){ int tar=tp<cnt[fi]?min(A[se][top].c,A[fi][tp].c):A[se][top].c; int nd=1ll*(tar-W+Z-1)/Z; nd=min(nd,rem); rem-=nd; W+=1ll*Z*nd; tt+=nd-1; } else return false; } while(tp<cnt[fi]&&A[fi][tp].c<=W){ Q.push(A[fi][tp]); tp++; } tt++; if(tt>Lim[se])return false; } while(!Q.empty()){ node p=Q.top();Q.pop(); W+=p.d; } while(tp<cnt[fi]){ if(A[fi][tp].c<=W){ W+=A[fi][tp].d; tp++; } else if(rem){ int nd=(A[fi][tp].c-W+Z-1)/Z; nd=min(nd,rem); rem-=nd; W+=1ll*Z*nd; } else return false; } return true;}void solve(){ input();pre=cnt[fi]; sort(A[fi],A[fi]+cnt[fi],cmp); sort(A[se],A[se]+cnt[se],cmp); int a=Lim[fi],b=Lim[se]; int l=n,r=Lim[fi],res=-1; while(l<=r){ int mid=l+r>>1; Lim[fi]=min(a,mid); Lim[se]=min(b,mid); if(judge()){ res=mid; r=mid-1; } else l=mid+1; } if(res==-1)puts("Poor Captain Chen"); else ptn(res);}int main(){// freopen("pro.in","r",stdin);// freopen("chk.out","w",stdout); int cas;sc(cas); int kas=0; while(cas--){ ++kas; solve(); } return 0;}
0 0
- HDU 5859 Captain is coding
- 【HDU】5859 Captain is coding【优先队列贪心】
- 2016多校训练Contest10: 1003 Captain is coding hdu5859
- 2017多校训练Contest2: 1001 Captain is coding hdu6045
- HDU-5988 Coding Contest
- What Is Key-Value Coding?
- O captain my captain
- O Captain!My Captain!
- Key-Value Coding 01 - What is key-Value Coding
- what is apple lossless audio coding(ALAC)
- Coding is not the new literacy
- hdu 5988 Coding Contest (费用流)
- HDU 5988 Coding Contest(费用流)
- 【HDU 5988】 Coding Contest 【费用流】
- HDU-5988-Coding Contest(费用流)
- hdu 5988 Coding Contest (最小费用流)
- hdu 5988 Coding Contest (费用流变形)
- HDU-5988 Coding Contest 最大费用流
- CodeIgniter框架源码笔记(10)——SESSION类之用户接口CI_SESSION
- 根文件系统移植之tslib移植记录
- 反射
- thread线程
- 【u210】kfc
- HDU 5859 Captain is coding
- 如何搞定SVN目录的cleanup问题和lock问题
- 初学者之小甲鱼复杂数据类型-指针
- BootStrap-學習網址
- Linux移植随笔:终于解决Tslib的问题了
- JS实现对联浮动广告(初级)
- 2017年秋季校招面经
- 【u209】轰炸
- http://blog.chinaunix.net/uid-21411227-id-1826986.html