Codeforces Round #666 (Div. 2)
哎太菜了就做出2個(gè)題掉了19分~~
A - Juggling Letters
統(tǒng)計(jì)一下每個(gè)字母出現(xiàn)的次數(shù),由于最后要平均分配到每個(gè)數(shù)組中那么每個(gè)字母出現(xiàn)次數(shù)應(yīng)該是n的倍數(shù)
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<string> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; typedef pair<int,int> pii; int cnt[30]; int main() {IO;int T;cin>>T;while(T--){memset(cnt,0,sizeof cnt);int n;cin>>n;for(int i=1;i<=n;i++){string s;cin>>s;for(auto t:s) cnt[t-'a']++;}bool ok=1;for(int i=0;i<26;i++)if(cnt[i]%n) {ok=0;break;}if(ok) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0; }B - Power Sequence
這題打了個(gè)暴力,玄學(xué)復(fù)雜度不知道怎么過(guò)的
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<iostream> #include<algorithm> using namespace std; typedef long long ll; typedef pair<int,int> pii; const int N=100010; const ll maxn=1e17; ll a[N]; int main() {IO;int n;cin>>n;ll maxa=0;for(int i=0;i<n;i++) {cin>>a[i];maxa=max(maxa,a[i]);}sort(a,a+n);ll res=maxn;for(int i=1;i<=100000;i++){ll cnt=abs(a[0]-1);ll p=1;bool ok=1;for(int j=1;j<n;j++){if(p>maxn/i){ok=0;break;}p=p*i; cnt+=abs(p-a[j]);}if(ok) res=min(res,cnt);}cout<<res<<endl;return 0; }C - Multiples of Length
非常好的思維題,沒(méi)有想到啊。。。
先把1~n-1的數(shù)全部變成n的倍數(shù),可以這樣a[i]+a[i]*(n-1)一定是n的倍數(shù)。然后將最后一個(gè)數(shù)變成0,第三部將整個(gè)數(shù)組消為0
考試的時(shí)候想的是先把前一半len1變成n的倍數(shù),然后把后一半len2變成n的倍數(shù),對(duì)于加數(shù)能否變成n的倍數(shù)好像還不確定,現(xiàn)在要求ai+k1len1=k2na_i+k_1len_1=k_2nai?+k1?len1?=k2?n即k1len1+k2n=aik_1len_1+k_2n=a_ik1?len1?+k2?n=ai?根據(jù)擴(kuò)展歐幾里得算法可以求k1len1+k2n=gcd(len1,n)k_1len_1+k_2n=gcd(len_1,n)k1?len1?+k2?n=gcd(len1?,n)如果ai%gcd(len1,n)a_i \% gcd(len_1,n)ai?%gcd(len1?,n)不為0那么無(wú)解,然后看了一下D發(fā)現(xiàn)好像是NIM游戲(后來(lái)證明是貪心),然后就不想看了就睡覺(jué)了。
不過(guò)看完題解發(fā)現(xiàn)如果len1=n?1len_1=n-1len1?=n?1,那么gcd(len1,n)=1gcd(len_1,n)=1gcd(len1?,n)=1就不存在無(wú)解情況了。
D - Stoned Game
雙方每次都選擇當(dāng)前石子數(shù)目最多的一堆即是最優(yōu)方案。可以用優(yōu)先隊(duì)列模擬取石子過(guò)程。下面代碼參考YeHosea大佬題解
一堆最多的石子超過(guò)總數(shù)一半先手必勝,如果未超過(guò)分奇偶討論即可
whd大佬打表找規(guī)律結(jié)論與下述代碼一樣
補(bǔ)題的時(shí)候發(fā)現(xiàn)這次div2并不是太難,只是思維題較多,需要靜下心來(lái)思考。
要加油哦~
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #666 (Div. 2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 怎样检测网络丢包率如何PING检测丢包
- 下一篇: Namomo Fish(Easy) Ro