【CodeForces - 349C】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?

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 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.

Examples

Input

3
3 2 2

Output

4

Input

4
2 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个人玩游戏,告诉你游戏规则:每轮游戏会有1个裁判,剩下n-1个人当参与者。已知第i个人要求当ai次参与者。。问你至少几轮游戏可以让所有人都心满意足。

解题报告:

   二分轮数。如果满足的话,我们让每个人,除了那ai次当参与者,剩下的都当裁判去,如果此时当的裁判数大于轮数,说明这种轮数就可以,(因为我可以让那些多的人在去当参与者嘛,反正他们不嫌多)然后就可以二分了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
ll a[MAX];
int n;
bool ok(ll x) {ll sum = 0;for(int i = 1; i<=n; i++) sum += (x-a[i]);return sum >= x;}
int main()
{ll l = 0,r = 1e13;cin>>n;for(int i = 1; i<=n; i++) scanf("%lld",a+i),l=max(l,a[i]);ll mid = (l+r)>>1,ans = 0;while(l<=r) {mid=(l+r)>>1;if(ok(mid)) {ans=mid;r=mid-1;}else l=mid+1;}printf("%lld\n",ans);return 0 ;}

两个注意事项:

   1.r不能开太大,不能1e13,,因为在ok函数中会越界变成负数就GG了,,所以1e13刚好满足:1e5的n去乘上ok函数中极限状态的x(也就是r的最大取值)要小于longlong的范围、、、所以1e13就很合适、、不能想当然的开个最大1e18!!就炸了!!

   2.l不能从0开始取值,而应该从a[i]的最大值  开始。因为如果要从0开始取值,,ok函数中就需要判断如果有一个a[i]<x了就得return 0;因为这就不满足题意,是不可取的轮数!!所以方便起见就在初始化的时候设置好了。。这个和 修路 的那道题 是完全一样的想法。。要先去掉一部分l,,,不要从0开始取,,不然还得在ok函数中return掉,就很麻烦、。(当然也可以AC)

在此也做个总结,二分答案验证的时候,首先要看你的答案 需要满足题目中哪些信息,,然后再决定ok函数中怎么写来一定可以满足这些条件,,比如这个题,几个要求:首先每个人一定要当ai次参与者,剩余的轮数可以随便(也可以当参与者也可以当裁判)其次我要能够成功举办x轮游戏,说明我至少有x个裁判。满足两者点,我们就可以return 1  了。想想其实也不难,是不。

其实啊这题也可以直接O(1)出结果的。因为你看啊其实每次你都在做相同的工作,每次ok函数中都是减掉了所有的a[i],所以直接在main函数中求一个sum=(a[1]+a[2]+....+a[n])。然后求一个方程nx-sum >= x,求解x的最小值就可以了、、、所以啊没必要二分的、、二分就感觉怪怪的,就跟二分求a+b一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android新材料设计,android - 如何实现新材料BottomAppBar为BottomNavigationView - SO中文参考 - www.soinside.com...

解决了基本上&#xff0c;而不是试图迫使菜单的资源&#xff0c;我需要的布局&#xff0c;我用这个方法&#xff0c;而不是&#xff0c;我只是把使用“空”元素作为dglozano建议BottomAppBar内的LinearLayout。使用?attr/selectableItemBackgroundBorderless我也能做到这一点实…

【CodeForces - 1A】Theatre Square(水题,几何)(CODEFORCES,梦的开始)

题干&#xff1a; Theatre Square in the capital city of Berland has a rectangular shape with the size n  m meters. On the occasion of the citys anniversary, a decision was taken to pave the Square with square granite flagstones. Each flagstone is of the …

html教程是语音版,【HTML教程】HTML 语言简介

标签是一个容器标签&#xff0c;用于放置网页的主体内容。浏览器显示的页面内容&#xff0c;都是放置在它的内部。它是的第二个子元素&#xff0c;紧跟在后面。网页标题hello world

【POJ - 1664】放苹果 (递归经典题 或 dp 或 母函数)

题干&#xff1a; 把M个同样的苹果放在N个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法&#xff1f;&#xff08;用K表示&#xff09;5&#xff0c;1&#xff0c;1和1&#xff0c;5&#xff0c;1 是同一种分法。 Input 第一行是测试数据…

html文本下一页,Javascript html2canvas + jsPDF 导出PDF,解决一半文字在上一页一半文字在下一页的问题...

var pdfContent document.getElementById("pdfDiv");var width pdfContent.offsetWidth; //获取dom 宽度var height pdfContent.offsetHeight; //获取dom 高度var canvas document.createElement("canvas"); //创建一个canvas节点var scale 3; //定义…

无法设置html过渡效果,html – CSS3过渡显示无阻止过度滚动

我假设你的弹出窗口是绝对定位的,所以你可以做以下事情&#xff1a;>隐藏时,将弹出窗口设置为巨大的负值.这会将其移出屏幕并摆脱滚动条.>在悬停时,将顶部设置为正确的值并转换不透明度值.>确保CSS转换规则仅适用于opacity属性.HTMLPopup go nowMy cats breath smells…

ACM 题目分类POJ(自用,精)

详情见博客&#xff1a;http://exp-blog.com/2018/06/28/pid-38/ 和博客https://blog.csdn.net/a1dark/article/details/11714009/ http://exp-blog.com/2018/06/10/pid-136/ https://blog.csdn.net/lyy289065406/article/details/6642573

html表格全屏显示,tableView滑动全屏显示

今天要分享的一个效果是在一个页面弹出视图展示一个tableview&#xff0c;然后手指滑动tableview时&#xff0c;视图随着tableview偏移量增加而慢慢增加&#xff0c;到达临界时&#xff0c;全屏显示&#xff0c;然后再次向下滑动时&#xff0c;当偏移量到达临界点&#xff0c;视…

【 CodeForces - 864B】Polycarp and Letters(水题,字符串,有坑)

题干&#xff1a; Polycarp loves lowercase letters and dislikes uppercase ones. Once he got a string sconsisting only of lowercase and uppercase Latin letters. Let A be a set of positions in the string. Lets call it pretty if following conditions are met:…

计算机网络65535,计算机网络1

1.网络基础&#xff1a;1.1 IT行业铁三角&#xff1a;os&#xff0c;web&#xff0c;sql 不管是哪个IT岗位都应该懂&#xff0c;1.2 开发铁三角&#xff1a;语言&#xff0c;数据结构算法&#xff0c;数据模式1.3 测试铁三角&#xff1a;需求&#xff0c;搭环境和设计用例&…

【CodeForces - 864C】Bus (模拟,有坑)

题干&#xff1a; A bus moves along the coordinate line Ox from the point x  0 to the point x  a. After starting from the point x  0, it reaches the point x  a, immediately turns back and then moves to the point x  0. After returning to the point…

大量html乱码seo,HTTPS改造之后网页错位乱码,影响SEO和正常访问,应该这样改

有一些朋友可能不太知道https改造怎么做&#xff0c;就学着网站的步骤进行&#xff0c;实际操作过程中可能会遇到很多问题。比如说有的会出现网页错位、页面乱码、后台功能无法使用的情况。昨天我们就有一个客户他自己做了https改造&#xff0c;但是造成后台无法上传图片的情况…

【NOIP2013积木大赛,NOIP2018铺设道路】积木大赛(思维,贪心)

题干&#xff1a; 题目描述 春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为nn的大厦&#xff0c;大厦可以看成由n块宽度为1的积木组成&#xff0c;第i块积木的最终高度需要是h_ihi​。 在搭建开始之前&#xff0c;没有任何积木&#xff08;可以看…

微型计算机中最小的单位,微型计算机中最小的数据单位是

微型计算机中最小的数据单位是比特。微型计算机&#xff0c;是指由微处理器作为CPU的计算机。由大规模集成电路组成的、体积较小的电子计算机。由微处理机(核心)、存储片、输入和输出片、系统总线等组成。特点是体积小、灵活性大、价格便宜、使用方便。这类计算机的普遍特征就是…

【每日算法】【图论】【最小边覆盖 最小路径覆盖 最小顶点覆盖 最大独立集 最大团】

最小边覆盖 最大独立集 |V| - 最大匹配数 这个是在原图是二分图上进行的 最小路径覆盖和最小边覆盖不同&#xff0c;不要求给的图是二分图&#xff0c;而是要求是N x N的有向图&#xff0c;不能有环&#xff0c;然后根据原图构造二分图&#xff0c;构造方法是将点一分为二&am…

【51Nod - 1344】走格子 (思维)

题干&#xff1a; 有编号1-n的n个格子&#xff0c;机器人从1号格子顺序向后走&#xff0c;一直走到n号格子&#xff0c;并需要从n号格子走出去。机器人有一个初始能量&#xff0c;每个格子对应一个整数Aii&#xff0c;表示这个格子的能量值。如果Aii > 0&#xff0c;机器人…

计算机算法在生物信息学中的应用,计算机算法在生物信息学中的应用综述.doc...

计算机算法在生物信息学中的应用综述摘 要&#xff1a;在人类基因组计划的推动下&#xff0c;生物信息学得到了人们的广泛关注&#xff0c;并呈现出数量多、计算量大等鲜明特征&#xff0c;因此要求在生物信息学中采用计算机算法&#xff0c;以提高生物信息学处理问题的效率。以…

信息学竞赛计算机基础知识,信息学奥赛-计算机基础知识.doc

信息学奥赛-计算机基础知识TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc303947525" 第一章 计算机基础知识 PAGEREF _Toc303947525 \h 2HYPERLINK \l "_Toc303947526" 第一节 数制及其转换 PAGEREF _Toc303947526 \h 2HYPERLINK \l "_Toc3039…

【51Nod - 1182】完美字符串(贪心,字符串)

题干&#xff1a; 约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配&#xff0c;不同字母的完美度不同&#xff0c;分别对应一个1-26之间的整数。 约翰不在乎字母大小写&#xff08;也就是说字母A和a的完美度相同&#xff09;。给定一…

【51Nod - 1133】不重叠的线段 (贪心)

题干&#xff1a; X轴上有N条线段&#xff0c;每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。&#xff08;注&#xff1a;起点或终点重叠&#xff0c;不算重叠&#xff09;。 例如&#xff1a;151523233636&#xff0c;可以选23233636&#xff0c;这2条线段…