CF348A Mafia
题意:
有 n n n个人在玩游戏“黑手党”,这个游戏规则是每局必须有一个主持, ( n − 1 ) (n-1) (n−1)名选手。其中第 i i i个人表示想玩 a i a_i ai局游戏且不当主持,让求出满足每人要求的最少的局数。
思路:
考虑二分最少的局数,假设局数为
x
x
x。
可以满足每个选手需求的条件为:
∑
a
i
≤
(
x
∗
(
n
−
1
)
)
\sum{a_i} \le (x*(n-1))
∑ai≤(x∗(n−1))
二分时check这个式子即可。
ps:二分的上下界必须严格取好,不然WA掉。
Code:
ll n;
ll q[N];
int op[N],p[N],t[N];
int main(){
cin>>n;
ll sum=0;
ll maxx=-1;
rep(i,1,n){
cin>>q[i];//每个人想玩q[i]局
sum+=q[i];
maxx=max(maxx,q[i]);
}
ll l=maxx,r=sum;ll ans=0;//上下界
while(l<=r){
ll mid=(l+r)/2;
if(mid*(n-1)>=sum){
r=mid-1;
ans=mid;
}
else l=mid+1;
}
//cout<<r<<endl;
cout<<ans<<endl;
return 0;
}