今天看机房大佬们找老师要外网打CF比赛,我忍不住也跟着注册了个号参加了,这是我第一次打CF比赛,打得比较菜,可能还有讨论成分,请见谅哈。
T1:Benches
题意:有$n$个长凳,初始每个长凳上面坐着$a_i$个人,现在又来了m个人,每个人会选一个长凳坐下。设新来的m个人都坐下后,人数最多的一个长凳的人数为$k$,求$k$的最小值和最大值。
题解:$k$最小:把新来的人尽量往人少的长凳上放,如果放到所有长凳人数都相等的话就均分剩下的人;$k$最大:把m个人都放到初始人数最多的长凳上。
1 #include<bits/stdc++.h> 2 using namespace std; 3 inline int read(){ 4 int x=0; bool f=1; char c=getchar(); 5 for(;!isdigit(c);c=getchar()) if(c=='-') f=0; 6 for(; isdigit(c);c=getchar()) x=(x<<3)+(x<<1)+(c^'0'); 7 if(f) return x; 8 return 0-x; 9 } 10 int n,m,a[10005],mx,cha_sum; 11 int main(){ 12 n=read(),m=read(); 13 for(int i=1;i<=n;i++) mx=max(mx,a[i]=read()); 14 for(int i=1;i<=n;i++) cha_sum+=mx-a[i]; 15 printf("%d %d\n", m-cha_sum>0 ? mx+(m-cha_sum+(n-1))/n : mx, mx+m); 16 return 0; 17 }