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学习心得(四) 数据类 ...
随机推荐
- Tomcat服务器如何读取本地磁盘数据?
实际问题: 如何让用户下载本地磁盘的资源文件呢? 在server.xml文件中配置虚拟路径如下(以下代码放在Host标签之中即可): 例如: 具体含义: 把本地磁盘目录 "D:\uploa ...
- HDU2282 Chocolate KM算法
第一次做这样的题,其中有几个细节是反复思考反复调试,最后一A的,ORZ,又加深了对KM算法的理解.能不参考网上的题解,而是平静下来思考,参透,最后敢于尝试.....真的很重要,以后遇到才会有更深的印象 ...
- MVC 中获取Json数据
@{ ViewBag.Title = "json示例项目"; } @Scripts.Render("~/bundles/jquery") <h2>j ...
- asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库
void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 Exception objErr = Server.Ge ...
- nginx + keepalived 实现高可靠web网站
组网图: 配置信息: 左边nigx 服务器的 /usr/local/nginx/conf/nginx.conf #user nobody; worker_processes 1; #error_l ...
- Oracle_11gR2_概念_第06章_数据字典和动态性能视图_英文词汇
decode 解码 be intend for 适应 distinguished 显著的,突出的 implied 隐含的 abbreviated 简短的 enabled roles 已 ...
- servlet 相应头重定向
package demoservllet; import java.io.IOException;import javax.servlet.ServletException;import javax. ...
- Python通过future处理并发
future初识 通过下面脚本来对future进行一个初步了解:例子1:普通通过循环的方式 import os import time import sys import requests POP20 ...
- Scala-Spark digamma stackoverflow问题
Scala-Spark digamma stackoverflow问题 这两天在用spark做点击率的贝叶斯平滑,参考雅虎的论文进行了一番尝试. 先上代码: # click_count, show_c ...
- (@WhiteTaken)设计模式学习——观察者模式
忙里抽闲,继续学习设计模式,作为自己的读书笔记,这次介绍Java下实现的观察者模式. 观察模式需要了解的三个概念: 被观察者:被观察的对象,发生变化会通知观察者集合(存放观察者的容器) 观察者:有up ...