2019-2020 ICPC Asia Hong Kong Regional Contest

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;
}

猜你喜欢

转载自blog.csdn.net/weixin_45436102/article/details/110665873