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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Codeforces Global Round 10

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces Global Round 10 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這種大場全是神仙打架,向我這種菜菜就是掉分www太難了
神仙打架,百姓遭殃。

A - Omkar and Password

分析可以知道,只要數組元素不是全部相等答案就是1,如何數組元素全部相等答案就是n。

#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; ll a[N]; int n; int main() {IO;int T;cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];bool ok=1;for(int i=2;i<=n;i++) if(a[i]!=a[1]){ok=0;break;}if(ok) cout<<n<<endl;else cout<<1<<endl;}return 0; }

B - Omkar and Infinity Clock

數學題,稍微寫一下就可以找到規律。

#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=200010; ll a[N]; ll n,k; int main() {IO;int T;cin>>T;while(T--){cin>>n>>k;ll maxa=-2e9,mina=2e9;for(int i=1;i<=n;i++) {cin>>a[i];maxa=max(maxa,a[i]);mina=min(mina,a[i]);}if(k&1){for(int i=1;i<=n;i++) cout<<maxa-a[i]<<" ";cout<<endl;}else{for(int i=1;i<=n;i++) cout<<a[i]-mina<<" ";cout<<endl;}}return 0; }

C - Omkar and Waterslide

貪心洛谷原題
題目轉化一下相當于添坑。
如果a[i-1]>a[i]說明需要填完a[i-1]-a[i]然后轉化為添第i-1個坑即f[i-1]
如果a[i-1]<=a[i]說明填i-1個坑的同時能過順便填上第i個坑

#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=200010; ll a[N]; ll n; ll f[N]; int main() {IO;int T;cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) f[i]=f[i-1]+max(a[i-1]-a[i],0ll);cout<<f[n]<<endl;}return 0; }

就做了三個題

D - Omkar and Bed Wars

參考答案正解%%%Orz
首先考慮不合法的情況:
①s[i-1]=L并且s[i+1]=L但是s[i]=L也就是你右邊的人打你,你左邊的人沒打你但是你卻打你左邊的人。
②s[i-1]=R并且s[i+1]=R但是s[i]=R也就是你左邊的人打你,你右邊的人沒打你但是你卻打你右邊的人。
發現就這兩種不符合規矩的情況即不能有3個連續相同的字符(Orz我當時亂的一p,這分析太妙了)
因此統計連續相同字符的個數cnt,然后變成不能有3個連續相同的字符。如果連續相同的字符數目是cnt那么要花費cnt/3的代價。
注意如果是一個環,首先找一個點花費1代價破環,最終花費即(cnt-1)/3+1

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<string> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int N=200010; ll a[N]; int n; int main() {IO;int T;cin>>T;while(T--){int n;cin>>n;string s;cin>>s;int cnt=0;while(s.size()&&s[0]==s.back()){cnt++;s.pop_back();}if(s.empty()){if(cnt<=2) cout<<0<<endl;else if(cnt==3) cout<<1<<endl;else cout<<(cnt-1)/3+1<<endl;}else{int res=0;s.push_back('$');for(int i=0;i<s.size()-1;i++){cnt++;if(s[i]!=s[i+1]){res+=cnt/3;cnt=0;}}cout<<res<<endl;}}return 0; }

這題好像dp也能做,可是我不會,回頭看看別的大佬咋寫的再補一下吧
要加油哦~

總結

以上是生活随笔為你收集整理的Codeforces Global Round 10的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。