cf Round #202 (div.2) C ------------ Mafia
2013-10-03 13:35
323 查看
只是觉得这个题用二分枚举过真是太神了。。。还是发下
思路:在最小可能round数(玩家想玩的最大盘数)和最大可能round数(所有玩家想玩盘数的总和)
范围内二分枚举得到最少需要玩的盘数。
只要满足所有玩家不玩的盘数>=当前盘数 && 当前盘数>=玩家想玩的最大盘数。
思路:在最小可能round数(玩家想玩的最大盘数)和最大可能round数(所有玩家想玩盘数的总和)
范围内二分枚举得到最少需要玩的盘数。
只要满足所有玩家不玩的盘数>=当前盘数 && 当前盘数>=玩家想玩的最大盘数。
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int n; __int64 maxround,r[100010]; bool ok(__int64 x) { __int64 cnt=0; for(int i=0;i<n;i++) cnt+= x-r[i]; return cnt>=x && cnt>=maxround; } int main() { while(scanf("%d",&n)!=EOF) { __int64 sum=0; maxround = 0; for(int i=0;i<n;i++) { scanf("%d",&r[i]); sum+=r[i]; maxround = (maxround>r[i]?maxround:r[i]); } __int64 l=maxround, r=sum, mid; while(l<=r) { mid = (l+r)/2; if(ok(mid)) r = mid-1; else l = mid+1; } printf("%I64d\n",l); } return 0; }
相关文章推荐
- CF round#439 div.2 C The Intriguing Obsession【DP】
- CF round#420 div.2 E Okabe and El Psy Kongroo【矩阵快速幂】
- Codeforces Round #202 (Div. 1) A. Mafia 【二分】
- Codeforces Round #202 (Div. 1) A. Mafia 推公式 + 二分答案
- Codeforces Round #202 (Div. 2)C. Mafia
- CF round#202 A (13.09.28)
- Codeforces Round #202 (Div. 1) A. Mafia
- CF Round #354 Div.2
- Codeforces Round #202 (Div. 1) A. Mafia
- Codeforces Round #202 (Div. 1) A. Mafia(二分,思路)
- Codeforces Round #202 (Div. 1) A. Mafia二分查找,玩游戏
- Codeforces Round #202 (Div. 2) C. Mafia
- Codeforces Round #202 (Div. 2)C. Mafia(思维)
- Codeforces Round #202 (Div. 1) A. Mafia 贪心
- Codeforces Round #430(Div.2)Problem C Ilya And The Tree(DFS)
- Codeforces Round #434 (Div.2) - C - Did you mean...
- CF AIM Tech Round 3 (Div. 2) D - Recover the String
- Codeforces Round#213(div.2)
- CF - 387 - B. George and Round(指针)
- Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C. Destroying Array 双向链表+反向做+优先队列