codefoces384A-Mafia心得
题目描述: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?
输入描述: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.
输出描述:
In a single line print a single integer — the minimum number of game rounds the friends need to let thei-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 the cin,cout streams or the %I64d specifier.
输入样例1:
3
3 2 2
输出样例1:
4
输入样例2:
4
2 2 2 2
输出样例2:
3
题目大意:有n个人玩一个游戏 每一轮游戏都需要一个裁判 其余n-1个人是玩家 现在这n个人每个人都有想当玩家的轮数a1,a2.......an 求最少需要玩多少轮能是这n个人每个人都能玩到自己想当玩家的轮数.
输入输出解释:
输入两行 第一行是n个人 第二行是这n个人每个人想当玩家的轮数
思路:
这n个人中 必然有相当玩家轮数最多的那个人 因此 要玩的轮数至少得是max(a1,a2,.....an),我们先这样分析:刚开始,所有的人想当玩家的轮数之和为:sum(a1,a2,....an),而在每一轮游戏中,都会有n-1个人相当玩家的次数减少1,也就是sum每一次游戏减少n - 1,最终经过k轮sum小于等于0,这也就是最终的状态,sum<=0,因此,我们只需要求这个k,而这个k其实很容易求,其实k = [sum / (n - 1)],其中[]是向上取整符号,当求出这个k后,我们还需要进一步判断:当k < max(ai,a2,....an)时,代表在max(a1,a2,....an)轮之前每个人想当玩家的轮数之和就小于等于0了,这是因为,当一些人相当玩家的轮数为0时,后面的每一轮其实都必要再减去n-1了,因为这些人已经不可以再减了,这就会导数在max(a1,a2,..an)轮之前sum<=0,而因为我们最少需要玩的轮数应该是max(a1,a2,....an)轮,因此,此时我们要输出的就是max(a1,a2,...an)轮。而当k >= max(a1,a2,...an)轮时,这个k就是我们要找的最小的满足使n个人都能玩到自己相当玩家轮数的轮数。这道题目整体考虑的还是数学知识,这个规律也是我列了几组数据之后发现的,总的来说,我们要求的k的公式如下:
k = max(max(a1,a2,...an),[sum / (n - 1)]);//[]为向上取整符号
代码如下:
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const int N = 100000;
int main(void)
{
long long int sum,Max,a[N],i,n,m;
scanf ("%lld",&n);
Max = -1;
sum = 0;
for (i = 0; i < n; i++)
{
scanf ("%lld",&a[i]);
//边输入每个人相当玩家的轮数边求想当玩家次数最多的玩家相当玩家的次数
if(Max == -1 ||a[i] > Max)
{
Max = a[i];
}
//边输入边求每个人相当玩家的次数之和
sum += a[i];
}
m = sum / (n - 1);
//将m向上取整
if(m * (n - 1) < sum)
{
m++;
}
//将m和max(a1,a2,....an)比较,如果比max(a1,a2,....an)小,则应该玩的轮数为max(a1,a2,....an)轮,否则为m轮
if(m < Max)
{
m = Max;
}
//输出m轮
printf ("%lld\n",m);
return 0;
}
codefoces384A-Mafia心得的更多相关文章
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- NoSql数据库使用半年后在设计上面的一些心得
NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(三) 查看字段长度
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(七) 查询
我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(八) 插入 更新 删除
我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...
- 我的MYSQL学习心得(九) 索引
我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
随机推荐
- php中常用的字符串大小写转换函数实例解释
PHP字符串处理函数中,最为简单的几个函数,相关解释就不上了,直接看例子. PHP字符串处理函数中,最为简单的几个函数,相关解释就不上了,直接看例子. strtolower函数.strtoupper函 ...
- Fiddler屏蔽某些url的抓取方法
在用Fiddler调试网页的时候,可能某些频繁的ajax轮询请求会干扰我们,可以通过以下方法屏蔽某些url的抓取. 在需要屏蔽的url行上右键---->“Filter Now”-----> ...
- sqlserver游标使用和循环
/*** 游标的使用 讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱. 使用游标的顺序: 声名游标.打开游标.读取数据.关闭游标.删除游标. 1.3.1声明游标 最简单游标声明:DECLA ...
- 学习Ajax
1.XHR对象 IE7+.Firefox.Opera.Chrome和Safari都支持原生XMLHttpRequest对象,IE6不支持,只支持ActiveXObject对象,该对象在IE11中已经不 ...
- 深圳--博雅互动 Android面试打酱油归来
公司在TCL工业园E4,坐地到西丽站,那边在修路,不好走.B796公交站台在A出口的反方向,还要顺着施工的屏障打个弯,在西丽法院1上车.公司那边比较偏了,附近只有两趟公交.办公地点在10楼,出电梯就可 ...
- webview的javascript与Native code交互
http://my.oschina.net/u/1376187/blog/172296 项目中使用了webview显示网页,其中需要网页和native方法有交互,搜索到一篇文章,转发分享一下: === ...
- Android 发展史
1. 概述 http://zh.wikipedia.org/wiki/Android# 2. Android版本发布表 Time Code name Version API level 2014年1 ...
- (@WhiteTaken)设计模式学习——享元模式
继续学习享元模式... 乍一看到享元的名字,一头雾水,学习了以后才觉得,这个名字确实比较适合这个模式. 享元,即共享对象的意思. 举个例子,如果制作一个五子棋的游戏,如果每次落子都实例化一个对象的话, ...
- Ubuntu安装Flash视频插件
http://www.linuxidc.com/Linux/2014-05/101095.htm
- 浅谈Django的生命周期和CBF和FBC
Django的生命周期和CBF和FBC 对于所有的web框架来说本质就是一个socket服务端,浏览器是socket客户端,客户端和服务端通信,字符串(Http协议):请求头和请求体 响应头+响应体 ...