Codeforces Global Round 10
這種大場全是神仙打架,向我這種菜菜就是掉分www太難了
神仙打架,百姓遭殃。
A - Omkar and Password
分析可以知道,只要數(shù)組元素不是全部相等答案就是1,如何數(shù)組元素全部相等答案就是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
數(shù)學(xué)題,稍微寫一下就可以找到規(guī)律。
#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
貪心洛谷原題
題目轉(zhuǎn)化一下相當(dāng)于添坑。
如果a[i-1]>a[i]說明需要填完a[i-1]-a[i]然后轉(zhuǎn)化為添第i-1個(gè)坑即f[i-1]
如果a[i-1]<=a[i]說明填i-1個(gè)坑的同時(shí)能過順便填上第i個(gè)坑
就做了三個(gè)題
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也就是你左邊的人打你,你右邊的人沒打你但是你卻打你右邊的人。
發(fā)現(xiàn)就這兩種不符合規(guī)矩的情況即不能有3個(gè)連續(xù)相同的字符(Orz我當(dāng)時(shí)亂的一p,這分析太妙了)
因此統(tǒng)計(jì)連續(xù)相同字符的個(gè)數(shù)cnt,然后變成不能有3個(gè)連續(xù)相同的字符。如果連續(xù)相同的字符數(shù)目是cnt那么要花費(fèi)cnt/3的代價(jià)。
注意如果是一個(gè)環(huán),首先找一個(gè)點(diǎn)花費(fèi)1代價(jià)破環(huán),最終花費(fèi)即(cnt-1)/3+1
這題好像dp也能做,可是我不會(huì),回頭看看別的大佬咋寫的再補(bǔ)一下吧
要加油哦~
總結(jié)
以上是生活随笔為你收集整理的Codeforces Global Round 10的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果手机微信号怎么改,简单几步教你改头换
- 下一篇: 很牛的电脑配置软件(很牛的电脑配置)