2019-2020 ICPC Asia Hong Kong Regional Contest
B. Binary Tree
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 998244353;
const int maxn = 1e6 + 10;
void solve() {
int n;
cin>>n;
for (int i = 1; i <n; ++i) {
int x,y;
cin>>x>>y;
}
cout<<(n%2?"Alice":"Bob")<<endl;
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
cin >> _;
while (_--)
solve();
return 0;
}
D. Defining Labels
进制转换
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 998244353;
const int maxn = 1e6 + 10;
int n,k;
void dfs(int x){
if(x>k) dfs((x-1)/k);
cout<<(x%k?x%k:k)+9-k;
}
void solve() {
cin>>k>>n;
dfs(n);
cout<<"\n";
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
cin >> _;
while (_--)
solve();
return 0;
}
G. Game Design
递归建树,建俩个子树为2,和n/2;
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 998244353;
const int maxn = 1e6 + 10;
int pa[maxn];
int tmp[maxn];
int c[maxn];
int cnt=0;
int dfs(int k,int f){
int now=++cnt;
pa[now]=f;
if(k<=2){
pa[++cnt]=now;
c[cnt]=tmp[now]=1;
c[now]=3-k;
return 1;
}
tmp[now]=dfs(k/2,now)+dfs(2,now);
c[now]=tmp[now]+(k%2==0);
return tmp[now];
}
void solve() {
int k;
cin>>k;
dfs(k,0);
cout<<cnt<<endl;
for (int i = 2; i <=cnt; ++i)
cout<<pa[i]<<" ";
cout<<"\n";
for (int i = 1; i <=cnt; ++i)
cout<<c[i]<<" ";
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
// cin >> _;
while (_--)
solve();
return 0;
}