Codeforces Round #378 (Div. 2) D题(二分答案,贪心判断)
2016-11-22 22:01
435 查看
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int x[100100],y[100010],flag[100010]; int judge(int n,int m)//从前往后找是否可通过所有考试 { int sum=0; memset(flag,0,sizeof(flag)); for(int i=n;i>=1;i--) { if(x[i]!=0&&!flag[x[i]])//没考过 { flag[x[i]]=1;//标记 sum+=y[x[i]];//加上考试要复习的时间 m--;//考试门数减1 } else if(sum>0) { sum--;//可复习就减少复习天数 } } if(m!=0||sum!=0) return 0; else//所有的考完了,复习天数够 return 1; } int main() { int n,m; while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;i++) { scanf("%d",&x[i]); } for(int j=1;j<=m;j++) { scanf("%d",&y[j]); } int l=1,r=n; while(l<=r)//二分枚举答案 { int mid=(l+r)>>1; if(judge(mid,m)) { r=mid-1; } else { l=mid+1; } } if(!judge(n,m))//最大考不完输出-1 printf("-1\n"); else printf("%d\n",l); } }
题意:n天要通过m科考试,d[i]每天可以考哪门科目,a[i]每门科目需要的准备时间,一天可以考试也可以准备,求最少时间。
相关文章推荐
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划
- E. Vladik and cards Codeforces Round #384 (Div. 2) 好题 二分+(贪心+状态压缩DP)判断
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) 二分答案 + 网络流
- Codeforces Round #377 (Div. 2)D. Exams(二分/贪心)
- CODE[VS] 2744 养鱼喂妹纸 (二分答案验证 + 贪心)
- BZOJ 2525 Poi2011 Dynamite 二分答案+树形贪心
- Codeforces Round #262 (Div. 2) 二分+贪心
- poj3122 二分答案+贪心
- hdu 3622 Bomb Game(二分答案+2-sat判断答案可行性)
- codeforces round #364 div2 D As Fast As Possible 二分+贪心
- hihocoder hiho第38周: 二分·二分答案 (二分搜索算法应用:二分搜索值+bfs判断可行性 )
- 【BZOJ1816】【Cqoi2010】扑克牌 二分答案+贪心+构造(证明)
- bzoj 3613: [Heoi2014]南园满地堆轻絮 二分答案+贪心
- BZOJ 2067 POI 2004 SZN 树形DP 贪心 二分答案
- bzoj 2097: [Usaco2010 Dec]Exercise 奶牛健美操 (二分答案+贪心)
- Codeforces Round #379 (Div. 2) C. Anton and Making Potions 前缀最小值+贪心+二分搜索
- Codeforces Round #350 (Div. 2) (二分答案)
- 【二分答案+贪心】解决“最小值最大”问题(UVa 12124 - Assemble)
- 【二分答案+贪心】UVa 1335 - Beijing Guards
- 疫情控制 2012年NOIP全国联赛提高组(二分答案+贪心)