Codeforces Round #202 (Div. 1) A. Mafia二分查找,玩游戏
2016-07-27 09:15
483 查看
Mafia
Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d
& %I64u
Submit Status
Description
One day n friends gathered together to play "Mafia". During each round of the game some player must be the supervisor and other n - 1people
take part in the game. For each person we know in how many rounds he wants to be a player, not the supervisor: the i-th person wants to play ai rounds.
What is the minimum number of rounds of the "Mafia" game they need to play to let each person play at least as many rounds as they want?
Input
The first line contains integer n(3 ≤ n ≤ 105). The second line contains n space-separated
integers a1, a2, ..., an(1 ≤ ai ≤ 109) —
the i-th number in the list is the number of rounds the i-th person wants to play.
Output
In a single line print a single integer — the minimum number of game rounds the friends need to let the i-th person play at least airounds.
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64dspecifier.
Sample Input
Input
Output
Input
Output
Hint
You don't need to know the rules of "Mafia" to solve this problem. If you're curious, it's a game Russia got from the Soviet times:http://en.wikipedia.org/wiki/Mafia_(party_game).
题目大意:
n个人在玩游戏,但在玩游戏中必须要有人监督,给出n个数,表示每个人要玩的次数,问至少要玩多少次游戏,才能满足所有人要求
Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d
& %I64u
Submit Status
Description
One day n friends gathered together to play "Mafia". During each round of the game some player must be the supervisor and other n - 1people
take part in the game. For each person we know in how many rounds he wants to be a player, not the supervisor: the i-th person wants to play ai rounds.
What is the minimum number of rounds of the "Mafia" game they need to play to let each person play at least as many rounds as they want?
Input
The first line contains integer n(3 ≤ n ≤ 105). The second line contains n space-separated
integers a1, a2, ..., an(1 ≤ ai ≤ 109) —
the i-th number in the list is the number of rounds the i-th person wants to play.
Output
In a single line print a single integer — the minimum number of game rounds the friends need to let the i-th person play at least airounds.
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64dspecifier.
Sample Input
Input
3 3 2 2
Output
4
Input
42 2 2 2
Output
3
Hint
You don't need to know the rules of "Mafia" to solve this problem. If you're curious, it's a game Russia got from the Soviet times:http://en.wikipedia.org/wiki/Mafia_(party_game).
题目大意:
n个人在玩游戏,但在玩游戏中必须要有人监督,给出n个数,表示每个人要玩的次数,问至少要玩多少次游戏,才能满足所有人要求
#include<cstdio> int n; __int64 a, sum, mx, low, top, mid; int main(){ while(~scanf("%d", &n)){ mx=sum=0; for(int i=0; i<n; i++){ scanf("%I64d", &a); sum+=a; if(a>mx) mx=a;//找出二分时最小值 } low=mx; top=sum; while(low<top){ mid = (low+top)/2; if(mid*n-sum>=mid)//判断是否每人都有一次监督的机会 top=mid; else low=mid+1; } printf("%I64d\n", low); } return 0; }
相关文章推荐
- 查找练习 hash——出现过的数字 oj sdut
- 2016第三场多校联盟训练1003
- mysql插入数据库中文乱码
- 线程池的概念
- HDU 5752 Sqrt Bo(多校3--1001)
- 03-掌握-NSThread基本使用
- HDU 1698 <线段树,区间set>
- 线程池的概念
- css设置文本样式
- 在代码中设置RelativeLayout布局中标签的android:layout_toLeftOf、android:layout_toRightOf等属性
- Map两种遍历方式
- 好久写博客了,写个总结吧
- 进程的状态
- android 中Drawable跟Bitmap转换及常用于图片相关操作方法 - Android
- 兼容opacity
- [置顶]【H3 BPM工作流程管理产品小故事】第二篇 文本默认值
- Yii密码加密与验证(源码分析)
- 程序插桩
- 二叉排序树(oj2482)
- CentOS /bin/bash^M: bad interpreter解决方法