Codeforces Round #202 (Div. 1) A. Mafia 【二分】
2016-07-27 18:03
393 查看
A. Mafia
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
One day n friends gathered together to play "Mafia". During each round of the game
some player must be the supervisor and other n - 1 people 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 integersa1, 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 ai rounds.
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use thecin, cout streams
or the %I64d specifier.
Examples
input
output
input
output
Note
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 per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
One day n friends gathered together to play "Mafia". During each round of the game
some player must be the supervisor and other n - 1 people 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 integersa1, 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 ai rounds.
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use thecin, cout streams
or the %I64d specifier.
Examples
input
3 3 2 2
output
4
input
42 2 2 2
output
3
Note
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> #include <iostream> #include <cstring> #include <algorithm> using namespace std; __int64 n, a[100100]; bool judge(__int64 x) { __int64 cnt = 0; for (__int64 i = 0; i < n; i++) { //脑残,没注意这个条件,导致一直WA if (x < a[i]) return false; cnt += x - a[i]; } return x <= cnt; } int main() { while (cin>>n) { for (__int64 i = 0; i < n; i++) cin>>a[i]; __int64 lb = 0, ub = 1e12; __int64 ans = 0; while (ub >= lb) { __int64 mid = (lb + ub)>>1; if(judge(mid)) { ans = mid; ub = mid - 1; } else lb = mid + 1; } cout<<ans<<endl; } return 0; }
相关文章推荐
- listView基本实现
- Ionic 常见问题及解决方案
- 机器学习之 了解TensorFlow
- Android启动界面先白屏然后才出现画面的解决办法
- 报错 MYSQL --Subquery returns more than 1 row
- JSON
- redmine 的安装
- 获取屏幕的宽度和高度
- 滚动数组
- POJ 1970 The Game (DFS)
- hdu 2111 Saving HDU
- requirejs:模块加载(require)及定义(define)时的路径小结
- oracle服务占用8080端口
- poj 3295 Tautology(构造法)
- RaidoButton单选框
- build.gradle 多渠道打包和用正式签名运行调试
- Storm1.0集群部署
- Gradle常用命令操作及配置说明
- Linux 下IO端口编程访问
- 三、腾讯统计和bugly追踪集成