传送门

题意

分析

模拟一颗二叉树,找到待修改的节点然后向上维护即可

代码

#pragma GCC optimize(3)
#include <bits/stdc++.h>
#define debug(x) cout<<#x<<":"<<x<<endl;
#define dl(x) printf("%lld\n",x);
#define di(x) printf("%d\n",x);
#define _CRT_SECURE_NO_WARNINGS
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef vector<int> VI;
const int INF = 0x3f3f3f3f;
const int N = 2e6 + 10;
const ll mod = 1000000007;
const double eps = 1e-9;
const double PI = acos(-1);
template<typename T>inline void read(T &a) {char c = getchar(); T x = 0, f = 1; while (!isdigit(c)) {if (c == '-')f = -1; c = getchar();}while (isdigit(c)) {x = (x << 1) + (x << 3) + c - '0'; c = getchar();} a = f * x;
}
int gcd(int a, int b) {return (b > 0) ? gcd(b, a % b) : a;}
char str[N];
int tr[N];
int id[N];
int pos[N];
int n,m;void bfs(){queue<int> q;q.push(1);int k = pow(2,n) - 1,p = k;while(q.size()){int t = q.front();q.pop();pos[k] = t;id[t] = k--;int x = t << 1 | 1,y = t << 1;if(x <= p) q.push(x),q.push(y);}
}void build(int u){if(u > pow(2,n) - 1) {tr[u] = 1;return;}build(u << 1),build(u << 1 | 1);if(str[id[u]] == '0'){tr[u] = tr[u << 1];}if(str[id[u]] == '1'){tr[u] = tr[u << 1 | 1];}if(str[id[u]] == '?'){tr[u] = tr[u << 1] + tr[u << 1 | 1];}
}void dfs(int u){if(str[id[u]] == '0'){tr[u] = tr[u << 1];}if(str[id[u]] == '1'){tr[u] = tr[u << 1 | 1];}if(str[id[u]] == '?'){tr[u] = tr[u << 1] + tr[u << 1 | 1];}if(u == 1) return;dfs(u / 2);
}int main() {read(n);scanf("%s",str + 1);read(m);bfs();build(1);while(m--){int id;char a[3];scanf("%d%s",&id,a);str[id] = *a;dfs(pos[id]);di(tr[1]);}return 0;
}

CodeForces 1535D : Playoff Tournament 二叉树相关推荐

  1. 【平衡二叉树】D. Playoff Tournament

    D. Playoff Tournament 题意:有2^k个队伍参加一场比赛,队伍之间按序号两两比赛 给你一个字串s,代表每场比赛的胜负条件,满足 当s[i] 为0时,下标小的队伍获胜 当s[i] 为 ...

  2. D. Playoff Tournament

    D. Playoff Tournament Example inputCopy 3 0110?11 6 5 1 6 ? 7 ? 1 ? 5 ? 1 1 outputCopy 1 2 3 3 5 4 线 ...

  3. Educational Codeforces Round 110 (Rated for Div. 2)D Playoff Tournament

    题目大意: 给你一个k,一共有k+1支队伍,按编号顺序进行k次淘汰赛 再给你一串字符串代表每个比赛的结果 如果是1代表编号大的那支队伍赢 如果是0代表编号小的那支队伍赢 如果是?代表可能编号大的赢也可 ...

  4. Educational Codeforces Round 110 (Rated for Div. 2) D. Playoff Tournament

    传送门 题意:给你含有2^k-1个节点的满二叉树,对于叶子节点权值:'?' = 2, '1' = 1, '0' = 1; 对于非叶子节点 '?' = lsn + rsn, '1' = rsn, '0' ...

  5. CodeForces - 1569B Chess Tournament

    CodeForces - 1569B AYIT609第一周周赛(2021) A chess tournament will be held soon, where n chess players wi ...

  6. CodeForces 356A - Knight Tournament

    题目背景和大致意思是,王国要举行骑士比赛. 骑士编号从1-N:开始给定骑士的数目和比赛的场数. 接着每一行给定一个区间L和R,和一个骑士编号X,区间L-R里面的人都被X击败. 骑士被击败以后就出局,不 ...

  7. CF1535D. Playoff Tournament(线段树维护)

    题目链接 题意: 前去洛谷自行观看吧链接放上了:https://www.luogu.com.cn/problem/CF1535D 分析: 正向并不能看出来什么,反向的话就是构成了一颗线段树,直接维护这 ...

  8. Educational Codeforces Round 110 div.2 A~F题解

    视频讲解:BV1254y137Rn A. Fair Playoff 题目大意 有 444 位选手参加比赛,第 iii 位选手的水平为 si(1≤si≤100)s_i(1 \leq s_i \leq 1 ...

  9. 大一下第十四周学习笔记

    周二 6.1(dp) 这周开始刷kuangbin基础dp专题.昨天写高数作业去了没训练 A - Max Sum Plus Plus(dp空间与时间优化) 这题的dp方程我写出来了,但是感觉空间也炸时间 ...

最新文章

  1. C++ namespace 的作用以及使用
  2. BZOJ 2132 圈地计划(最小割)【BZOJ 修复工程】
  3. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用29
  4. 常看 Shell: 文本文件操作
  5. 使用DELPHI编写一个小的控件
  6. c语言将数组变为空,求助~~ 如何把数组变成动态输入的?
  7. 真的!最难啃的《深度学习》圣经花书,居然新出版了视频课!
  8. linux history nginx,vue-router History 本地开发环境和nginx配置
  9. 以实际产品为例, 进行软件工程训练的作业
  10. Java线程怎么发送消息_Java客户端Socket如何能在阻塞线程下收到服务端发送来的消息?...
  11. PyQt5 打包问题解决 Unable to find “D:\anaconda3\lib\site-packages\PyQt5\Qt\translations\qtwebengine_locale
  12. tda7294参数引脚功能_电容在电路中的几种功能
  13. 虽然有点“2”,但还是有意义的:PoseNet+LSTM 实现虚拟“逛街”
  14. 路由表(FIB)的初始化
  15. java 图片生成器_Java实现的图片生成器
  16. MapABC Flex4 Demo
  17. 内部收益率计算公式用计算机,用EXCEL计算财务内部收益率
  18. ansi_up---实现后端实时日志(带颜色)前端展示
  19. nginx 域名解析
  20. 把微信做成找券机器人,淘宝查券返利小助手实现方法分享

热门文章

  1. TI Sitara AM57x 多核SoC核心板(DSP + ARM)-性能及参数资料
  2. python 批量替换srt文本_自动生成srt格式的脚本(Python实现)
  3. 编写C++语言程序,在歌手大奖赛中,输入10名评委为某选手的打分成绩,去掉一个最高分,去掉一个最低分,求该选手最后得分。
  4. APIJSON使用场景以及其他说明
  5. Android Image单指滑动双指缩放功能
  6. Nodejs框架express常用中间件
  7. 日常生活小常识(10)
  8. Kindle剩余空间变少
  9. 卷积算子的矩阵向量乘积表示二维离散降质模型
  10. Python爬取ps笔刷素材--大文件下载