題目鏈接
題目大意:
n個盒子,每個盒子里有a[i]個球, 對于任意一個盒子,可以把其中的球隨意分配到其他(n-1)個盒子當中,使得n-1個盒子中的球數目相等,求 向n個盒子中最少添加多少個球才能實作上述操作
題目思路:
設最少向盒子添加 x個球,n個盒子的所有球的個數為sum
因為每個盒子的最終狀態可以確定 是 都相等的
所以設最終狀態的數字是ava
有
(sum+x)%(n-1)==0
(sum+x)/(n-1)==ava
設n個盒子中的最大值為ma
有
ma>=ava
聯立框1框2,有
ma>=ava
ava=(sum+x)/(n-1)
得
x <= ma*(n-1)-sum
行,答案出來了
但是x可能為負數,那就(n-1)個盒子再各加一個
CoDE
ll n,a[maxn];
int main() {
int toto=read();
while(toto--) {
cin>>n;
ll s=0,ma=-inf;
rep(i,1,n) cin>>a[i],ma = max(ma,a[i]),s+=a[i];
ll ans = (n-1)*ma -s;
if(ans<0) ans=((ans%(n-1))+n-1)%(n-1);
cout<<ans<<endl;
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225794.html
標籤:AI
上一篇:2020浙江省全國大學生智能汽車競賽——基礎四輪組入門看這一篇就夠了!(浙江省二等獎,附開源代碼)
下一篇:5G訊息或年底商用
