当前位置 博文首页 > Keven_11的博客:C++题解:狼人杀
?????目录
题目?
题解
有一天蒜头邀请了包含自己一共?n?位朋友玩狼人杀游戏。狼人杀游戏每一局需要有?n - 1?位玩家和?1?位上帝,上帝不参与游戏负责监督和提供信息,所大家都不愿意当上帝。
现在蒜头知道第?i?个朋友至少想当?a_i??次玩家,那最少要玩多少局狼人杀才能满足大家的要求?请你帮蒜头计算一下。
输入格式
输入第一行一个整数 n(3≤n≤105)?表示朋友人数。
接下来一行输入?n?个空格分割的整数 a1?,?,an(1≤ai?≤10^9)。
?输出格式
输出最少需要玩多少局狼人杀。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为?
wolf.in
,输出文件为?wolf.out
样例输入1
3 3 2 2样例输出1
4样例输入2
4 2 2 2 2样例输出2
3题解:
知识点:数学
分析:一局游戏只能提供 n-1 个游戏位置,而一共需要 s=a1+a2+……+an 个游戏位置,所以至少需要 ?s/(n+1) ? 局游戏。但是一个人不可能在一局游戏中占连个位置,所以至少又需要 ?max{ai} 局游戏。两者(?s/(n+1) ?和max{ai})取大就是答案。要注意用long long数据类型和转换成浮点数再计算
代码:
cs#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; typedef long long LL;//注意用long long LL x,sum,mx; int main(){ freopen("wolf.in","r",stdin); freopen("wolf.out","w",stdout); int n; scanf("%d",&n); for (int i=0;i<n;i++){ scanf("%lld",&x); sum+=x; mx=max(mx,x);//取最大值 } LL ans=ceil(1.0*sum/(n-1.0));//注意要*1.0,转换成浮点数计算,还要加上取整函数 printf("%d",max(ans,mx));//取最大值 return 0; }
下一篇:没有了
最新 更多<<
Keven_11的博客:C++题解:狼人杀 Keven_11的博客:C++题解:序列 Keven_11的博客:C++题解:奇怪的函数 Keven_11的博客:C++题解:[NOIP2014]子矩阵 Keven_11的博客:C++题解:Pell数列 Keven_11的博客:C++题解:Darko 的小球 Keven_11的博客:C++题解:百钱买百鸡数量 Keven_11的博客:C++题解:蜗牛旅行 Keven_11的博客:C++题解:铺砖 Keven_11的博客:C++题解:冒泡排序生成图 Keven_11的博客:C++题解:糖果 Keven_11的博客:C++题解:islands打炉石传说 Keven_11的博客:C++题解:位运算 Keven_11的博客:主定理 Keven_11的博客:C++基础:关于结构体重载运算符的重要细节 Keven_11的博客:C++基础:二叉树性质 大番薯:编程术语英汉对照 英雄哪里出来:?算法入门?《位运算 - 异或》简单01 —— LeetCod 英雄哪里出来:?算法入门?《位运算 - 位与》简单02 —— LeetCod 英雄哪里出来:?算法入门?《简单排序》简单01 —— LeetCode 217 英雄哪里出来:?算法入门?《简单排序》简单02 —— LeetCode 88. 英雄哪里出来:?算法入门?《坐标转换》中等01 —— LeetCode 74. 英雄哪里出来:?算法入门?《递推 - 二维》简单01 —— LeetCode 英雄哪里出来:??光天化日学C语言??(26)- if else 语句 | if ( 英雄哪里出来:?算法入门?《动态规划 - 线性DP》简单01 —— Lee 英雄哪里出来:?算法入门?《动态规划 - 线性DP》中等01 —— Lee 英雄哪里出来:?算法入门?《线性枚举》简单03 —— LeetCode 26. 英雄哪里出来:?算法入门?《动态规划 - 线性DP》简单02 —— Lee 英雄哪里出来:??光天化日学C语言??(27)- 条件运算符 | 唯一的 英雄哪里出来:?算法入门?《线性迭代》简单03 —— LeetCode 412