Codeforces Round #673 (Div. 2)——待补 E
由于開學了,一般晚上就不打cf了(太晚了,寢室不太適合打),而且賽后也懶得vp,有時候會在圖書館口胡題目,然后回寢室補一補,不過我也寫得太久了吧,很多細節(jié)瘋狂wa
A - Copy-paste
不難發(fā)現(xiàn)排序后答案就是?k?a2a1?+?k?a3a1?+?k?a4a1?+?+?k?ana1?\lfloor \frac{k-a_2}{a_1}\rfloor+\lfloor \frac{k-a_3}{a_1}\rfloor+\lfloor \frac{k-a_4}{a_1}\rfloor+\dots+\lfloor \frac{k-a_n}{a_1}\rfloor?a1?k?a2???+?a1?k?a3???+?a1?k?a4???+?+?a1?k?an???
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<iostream> #include<algorithm> using namespace std; const int N=1010; int a[N]; int n,k; int main() {IO;int T=1;cin>>T;while(T--){cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+1+n);ll res=0;for(int i=2;i<=n;i++) res+=(k-a[i])/a[1];cout<<res<<'\n';}return 0;}B - Two Arrays
貪心分組,排序后雙指針掃描。
注意:ai=aja_i=a_jai?=aj?并且 ai+aj=Ta_i+a_j=Tai?+aj?=T的情況,平均分組。
這個方法寫了很久,當然也可以用map直接記錄,不需要雙指針而且也比較友好。
C - k-Amazing Numbers
預(yù)處理pos[i]表示值是i數(shù)組出現(xiàn)的位置,可以用vector存儲,然后如果每兩個值之間的最大距離是len(注意開頭和結(jié)尾)那么i就可以作為長度為len的一個子串的答案。然后隨便搞搞就行了
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int N=300010; int a[N]; int n; vector<int> pos[N]; int len[N]; int ans[N]; int main() {IO;int T=1;cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++) {pos[i].clear();len[i]=0;ans[i]=-1;}for(int i=1;i<=n;i++){cin>>a[i];pos[a[i]].push_back(i);}for(int i=1;i<=n;i++){int m=pos[i].size();for(int j=1;j<m;j++) len[i]=max(len[i],pos[i][j]-pos[i][j-1]);if(m){len[i]=max(len[i],pos[i][0]);len[i]=max(len[i],n+1-pos[i][m-1]);}}for(int i=1;i<=n;i++)if(ans[len[i]]==-1) ans[len[i]]=i;int now=-1;for(int i=1;i<=n;i++){if(ans[i]==-1) cout<<now<<' ';else{if(now==-1) now=ans[i];else now=min(ans[i],now);cout<<now<<' ';}}cout<<'\n';}return 0;}D - Make Them Equal
首先先把所有值搞到a1a_1a1?上,最多需要2(n?1)2(n-1)2(n?1)次操作:如果ai%i=0a_i\%i=0ai?%i=0一次操作就可以否則需要先用a1a_1a1?去把aia_iai?調(diào)整成iii的倍數(shù),然后再需要一次操作。
然后直接用a1a_1a1?把所有值搞成平均數(shù)即可最多n?1n-1n?1次操作。
E - XOR Inverse
待補,本來在圖書館都想好咋做了,然后回來補題時候發(fā)現(xiàn)不咋對。。。
要加油哦~
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #673 (Div. 2)——待补 E的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces Round #67
- 下一篇: Codeforces Round #67