2019-2020 ICPC Asia Hong Kong Regional Contest 补题(部分)
codeforces原題鏈接
大佬題解
B - Binary Tree
每個(gè)人每次一定拿走奇數(shù)(2k?12^k-12k?1)個(gè)節(jié)點(diǎn),如果先手必勝不難發(fā)現(xiàn)兩人輪流拿最終一定拿奇數(shù)次(每次奇數(shù)個(gè)節(jié)點(diǎn))說明一共有奇數(shù)個(gè)節(jié)點(diǎn),如果先手必?cái)≌f明最終兩人共拿偶數(shù)次說明有偶數(shù)個(gè)節(jié)點(diǎn),因此可以根據(jù)奇偶性判斷輸贏。
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath> #include<queue> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<unordered_map> using namespace std; typedef long long ll; typedef pair<int,int> pii; const int N=50010; const ll mod=998244353; int n; int main() {IO;int T=1;cin>>T;while(T--){cin>>n;for(int i=1;i<n;i++){int a,b;cin>>a>>b;}if(n&1) cout<<"Alice\n";else cout<<"Bob\n";}return 0;}D - Defining Labels
模擬一下就即可。
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath> #include<queue> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<unordered_map> using namespace std; typedef long long ll; typedef pair<int,int> pii; const int N=50010; const ll mod=998244353; int main() {IO;int T=1;cin>>T;while(T--){int k;ll x;cin>>k>>x;ll base=1,s=0;while(s<x){base=base*k;s+=base;}x-=s-base;base/=k;vector<int> ans;while(x>0&&base){int r=(x+base-1)/base;ans.push_back(r+9-k);x-=(r-1)*base; base/=k;}for(auto t:ans) cout<<t;cout<<'\n';}return 0;}G - Game Design
本來想著構(gòu)造一條鏈,不過發(fā)現(xiàn)kkk有點(diǎn)大搞不了,于是。。就沒有于是了
參考上述題解發(fā)現(xiàn)自己還是對(duì)遞歸不熟練。
如果當(dāng)前節(jié)點(diǎn)的方案數(shù)為偶數(shù),那么我們構(gòu)造兩個(gè)方案數(shù)分別為 2,n22,\frac n 22,2n? 的子節(jié)點(diǎn);如果是奇數(shù)就構(gòu)造兩個(gè)方案數(shù)分別為
2,n22,\frac n 22,2n? 的子節(jié)點(diǎn),并且根節(jié)點(diǎn)單獨(dú)作為一種方案,遞歸終點(diǎn)是k≤2k≤2k≤2 的時(shí)候,我們只需要建一條鏈即可。
當(dāng)父節(jié)點(diǎn)的權(quán)值等于孩子節(jié)點(diǎn)的權(quán)值和的時(shí)候,父節(jié)點(diǎn)即可單獨(dú)稱為一種方案,如果大于就不能單獨(dú)稱為一種方案。
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath> #include<queue> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<unordered_map> using namespace std; typedef long long ll; typedef pair<int,int> pii; const int N=50010; const ll mod=998244353; int k,cnt; int fa[N],c[N]; int dfs(int k,int p) {int now=++cnt;fa[now]=p;if(k<=2){fa[++cnt]=now;c[cnt]=1;c[now]=3-k;return 1;}c[now]=dfs(k/2,now)+dfs(2,now)+(k%2==0);return c[now]-(k%2==0);} int main() {IO;int T=1;//cin>>T;while(T--){cin>>k;dfs(k,0);cout<<cnt<<'\n';for(int i=2;i<=cnt;i++) cout<<fa[i]<<' ';cout<<'\n';for(int i=1;i<=cnt;i++) cout<<c[i]<<' ';cout<<'\n';}return 0;}E - Erasing Numbers
大佬題解
直接貼貼大佬題解的圖片吧真的非常妙
J - Junior Mathematician
竟然還有點(diǎn)卡常,少了幾個(gè)%就A了。
為了補(bǔ)這個(gè)題重學(xué)數(shù)位dp,然后發(fā)現(xiàn)基本的數(shù)位dp
最近作業(yè)巨難,信號(hào)+數(shù)電,感覺老師上課瘋狂劃水,真就自學(xué)???
而且最近題解質(zhì)量真的差,沒時(shí)間打markdown不想打
要加油哦~
總結(jié)
以上是生活随笔為你收集整理的2019-2020 ICPC Asia Hong Kong Regional Contest 补题(部分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客练习赛 55
- 下一篇: Educational Codeforc