Acwing第 28 场周赛【完结】
生活随笔
收集整理的這篇文章主要介紹了
Acwing第 28 场周赛【完结】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這把打的不順,開頭交不上去就慌了。后面的T2,T3wa麻了。
目錄
- 4082. 子序列【簽到】
- 4083. 最大公約數(shù)【分解因子】
- 4084. 號(hào)碼牌【并查集】
4082. 子序列【簽到】
https://www.acwing.com/problem/content/description/4085/
暴力做法:
前綴和做法:
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int sum[N]; int main(void) {string s;cin>>s; s="0"+s;int cnt=0,n=s.size()-1;for(int i=1;i<=n;i++) sum[i]=sum[i-1]+(s[i]=='Q'?1:0);for(int i=1;i<=n;i++) if(s[i]=='A') cnt+=sum[i-1]*(sum[n]-sum[i]);cout<<cnt;return 0; }4083. 最大公約數(shù)【分解因子】
https://www.acwing.com/problem/content/description/4086/
對(duì)每一個(gè)數(shù),分解因子,最后枚舉所有的因子,取一個(gè)max即可。
4084. 號(hào)碼牌【并查集】
https://www.acwing.com/problem/content/4087/
根據(jù)題意建圖,然后枚舉每一個(gè)點(diǎn),看是否可以到達(dá)目的地即可。
其實(shí)不用建圖,因?yàn)槎际请p向邊,故直接用并查集,判斷當(dāng)前的點(diǎn)和目的地是不是同一個(gè)集合即可。
#include<bits/stdc++.h> using namespace std; const int N=110; int p[N],n,a[N],b[N]; int find(int x) {if(x!=p[x]) p[x]=find(p[x]);return p[x]; } int main(void) {cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) cin>>b[i];for(int i=1;i<=n;i++) p[i]=i;for(int i=1;i<=n;i++){if(i+b[i]<=n) p[find(i+b[i])]=find(i);if(i-b[i]>=1) p[find(i-b[i])]=find(i);}for(int i=1;i<=n;i++){if(find(i)!=find(a[i])){puts("NO");return 0;}}puts("YES"); } 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Acwing第 28 场周赛【完结】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ACM入门之【读入、输出优化】
- 下一篇: 2021算法竞赛入门班第一节课【枚举、贪