L2-047 锦标赛

思路

  • 树的模拟
#include <bits/stdc++.h>
//#define int long long
const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
using namespace std;
struct node
{
    int win, lose;
}tree[1 << 19];
int k;
int dfs(int v)
{
    if(v >= (1 << k)) return 1;
    if(tree[v].win < tree[v].lose) return 0;

    tree[v * 2].win = tree[v].win;
    tree[v * 2 + 1].win = tree[v].lose;
    if(dfs(v * 2) && dfs(v * 2 + 1)) return 1;

    tree[v * 2].win = tree[v].lose;
    tree[v * 2 + 1].win = tree[v].win;
    if(dfs(v * 2) && dfs(v * 2 + 1)) return 1;

    return 0;
}
signed main()
{
    cin >> k;
    //cout << (1 << k) << endl;
    for(int i = 1; i <= k; i ++)
    {
        //cout <<  1 << (k - i) << ' ' << ((1 << (k - i + 1)) - 1) << endl;
        for(int j = 1 << (k - i); j < 1 << (k - i + 1); j ++)
        {
            //cout << j << endl;
            cin >> tree[j].lose;
        }
        //cout << endl;
    }
    cin >> tree[1].win;
    if(dfs(1) == 1)
    {
        for(int i = 1 << (k - 1); i < 1 << (k - 1 + 1); i ++)
        {
            if(i == (1 << (k - 1))) cout << tree[i].win << ' ' << tree[i].lose;
            else cout << ' ' <<tree[i]. win << ' ' << tree[i].lose;
        }
    }
    else cout << "No Solution" << endl;
    return 0;
}

全部评论

相关推荐

2025-12-16 22:45
已编辑
电子科技大学 活动运营
Rain_Codin...:简历感觉有点乱了而且一股AI味,AI简历的一个特点就是废话很多,一个点能分成四个点来讲,可以仔细优化一下。 btw,手机看简历不好看出来,可以把电脑上的简历截图放出来。
点赞 评论 收藏
分享
2025-11-26 09:37
山西大学 测试工程师
我要娶个什么名:学长你电脑闹鬼了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务