Codeforces Round #726 (Div. 2) 6-18
阿新 • • 發佈:2021-06-19
比賽連結
A. Arithmetic Array
題意:
補數(大於等於0)使得\((b_1+b_2+...b_k)/k==1\)給出你n個數,讓你你補數,使得滿足條件。
分析:
其實讀懂題就很簡單了,如果和是負數,那就輸出1即可。如果sum大於等於n那麼輸出sum-n因為我們只需要在後面加上sum-n個0.
void solve(){ scanf("%lld",&n); m=0; for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); m+=a[i]; } if(m==n) cout<<0<<endl; else if(m>n){ cout<<m-n<<endl; }else { cout<<1<<endl; } }
B. Bad Boy
題意:
給出你一個\(n*m\)的矩形,給出你現在位於位置在\((x,y)\),讓你求出兩個點,使得你到這兩個點之後,再回來的最小距離最大化。
分析:
其實很明白了,選點肯定選四個角中的兩個點,四個角中肯定兩個對角點是最優的。
C. Challenging Cliffs
題意:
給出你\(n\)個高度\(h_1-h_n\),讓你重新排列,使得\(|h_1-h_n|\)最小,之後要等級最大,如果\(h_i<=h_{i+1}\) 等級加一
分析:
首先看滿足\(|h_1-h_n|\)最小,那麼我們肯定先排序,找到差最小的一對數。
再看條件二:
如果\(h_i<=h_{i+1}\)
void solve(){ scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); } sort(a+1,a+1+n); ll ans; ll cha=1e9+7; for(int i=n;i>=2;i--){ if(a[i]-a[i-1]<=cha){ cha=a[i]-a[i-1]; ans=i-1; } } cout<<a[ans]<<" "; for(int i=ans+2;i<=n;i++){ cout<<a[i]<<" "; } for(int i=1;i<ans;i++){ cout<<a[i]<<" "; } cout<<a[ans+1]<<endl; }