日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces Round #673 (Div. 2)——待补 E

發(fā)布時間:2023/12/3 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces Round #673 (Div. 2)——待补 E 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

由于開學了,一般晚上就不打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直接記錄,不需要雙指針而且也比較友好。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<iostream> #include<algorithm> using namespace std; typedef pair<int,int> pii; const int N=100010; pii a[N]; int n,m; int pos[N]; int main() {IO;int T=1;cin>>T;while(T--){cin>>n>>m;for(int i=1;i<=n;i++) {cin>>a[i].first;a[i].second=i;pos[i]=-1;}sort(a+1,a+1+n);for(int i=1,j=n;i<j;i++){while(j>i&&a[i].first>m-a[j].first) pos[a[j--].second]=0;while(j>i&&a[i].first==m-a[j].first) {if(a[i].first==a[j].first){pos[a[i++].second]=0;pos[a[j--].second]=1;}else pos[a[j--].second]=1;}if(j>=i) pos[a[i].second]=0;}for(int i=1;i<=n;i++) {if(pos[i]!=-1)cout<<pos[i]<<' ';elsecout<<0<<' ';}cout<<'\n';}return 0;}

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次操作。

#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=100010; int a[N],n; struct node {int l,r,x; }; vector<node> ans; int main() {IO;int T=1;cin>>T;while(T--){ans.clear();cin>>n;int s=0;for(int i=1;i<=n;i++) {cin>>a[i];s+=a[i];}if(s%n){cout<<-1<<'\n';continue;}s/=n;for(int i=2;i<=n;i++){int p=a[i]%i;if(p){a[1]+=a[i];ans.push_back({1,i,i-p});ans.push_back({i,1,a[i]/i+1});a[i]=0;}else{a[1]+=a[i];ans.push_back({i,1,a[i]/i});}}for(int i=2;i<=n;i++)ans.push_back({1,i,s});cout<<ans.size()<<'\n';for(auto t:ans) cout<<t.l<<' '<<t.r<<' '<<t.x<<'\n';}return 0; }

E - XOR Inverse

待補,本來在圖書館都想好咋做了,然后回來補題時候發(fā)現(xiàn)不咋對。。。
要加油哦~

總結(jié)

以上是生活随笔為你收集整理的Codeforces Round #673 (Div. 2)——待补 E的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。