题目大意:
给你一个k,一共有k+1支队伍,按编号顺序进行k次淘汰赛
再给你一串字符串代表每个比赛的结果
如果是1代表编号大的那支队伍赢
如果是0代表编号小的那支队伍赢
如果是?代表可能编号大的赢也可能编号小的赢
问你当修改了其中一个比赛的结果后有多少种不同队伍赢的情况

思路:
首先想一场比赛如果是1的话那么肯定是由编号大的那个队伍可能有多少种决定了这场比赛有多少种队伍
如果是0同理由编号小的队伍可能有多少种就决定了这场比赛的结果的队伍有多少种
而如果是?的时候就是编号小的队伍可能的情况和编号大的队伍可能的情况加起来决定了总队伍有多少种
那么像这种只与两种量有关的结果我们可以建二叉树处理
左节点表示编号大的队伍可能有多少种
右节点表示编号小的队伍可能有多少种
当该节点对应的字符是0的时候就把值变成左节点
其他两种情况同理
具体看代码

#include <bits/stdc++.h>
using namespace std;
string s;
int ans[1<<19];
int main()
{int k;cin>>k;cin>>s;int len=s.size();s+='#';reverse(s.begin(),s.end());//'#'被加到开头了for(int i=len+(1<<k);i>=len;i--)ans[i]=1;//初始化,一开始每个比赛的结果都是1for(int i=len;i>=1;i--){//看比赛结果的情况建树if(s[i]=='1')ans[i]=ans[i<<1];else if(s[i]=='0')ans[i]=ans[i<<1|1];else if(s[i]=='?')ans[i]=ans[i<<1|1]+ans[i<<1];}int m;cin>>m;while(m--){int p;char x;cin>>p>>x;p=(1<<k)-p;//因为一开始字符串反转了所以要减s[p]=x;while(p){if(s[p]=='1')ans[p]=ans[p<<1];else if(s[p]=='0')ans[p]=ans[p<<1|1];else if(s[p]=='?')ans[p]=ans[p<<1|1]+ans[p<<1];p>>=1;//找父节点}cout<<ans[1]<<endl;//最后所有的情况}return 0;
}

Educational Codeforces Round 110 (Rated for Div. 2)D Playoff Tournament相关推荐

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

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

  2. Educational Codeforces Round 121 (Rated for Div. 2) unr场 A B C

    Educational Codeforces Round 121 (Rated for Div. 2) A B C A. Equidistant Letters 思路: 每个字母在里面出现不超过两次且 ...

  3. 【CF比赛】Educational Codeforces Round 102 (Rated for Div. 2)

    题目来源 Educational Codeforces Round 102 (Rated for Div. 2) A. Replacing Elements 只要判断最大值是否小于等于d,或者第一个值 ...

  4. Educational Codeforces Round #136 (Rated for Div. 2) A~C

    A. Immobile Knight 题意: 给定一个 n×m 的棋盘,棋盘上有一个 "马",可以在一个方向上移动两个单元格,在垂直方向上移动一个单元格. 问:将其放在哪个位置,才 ...

  5. Educational Codeforces Round 138 (Rated for Div. 2)-赛后总结

    Dashboard - Educational Codeforces Round 138 (Rated for Div. 2) - Codeforces 总结一个教训就是不要心急,特别是对于一些题目, ...

  6. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  7. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  8. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

  9. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

最新文章

  1. 【解决方案】chrome打开新标签页自动打开chrome://newtab并且跳转到谷歌香港
  2. pymysql.err.IntegrityError: (1062, Duplicate entry 'roxml-ROXML' for key 'PRIMARY')
  3. linux访问文档根目录之外的网页_开发文档加载不再卡顿,亿点点提升
  4. BAPI_GOODSMVT_CREATE的几个应用
  5. Java导出基础 用POI导出Excel
  6. 计算机软件 教案,计算机软件系统教案
  7. 浅谈 trie树 及其实现
  8. 开源开放 | 开源网络通信行业知识图谱(新华三)
  9. Dart 3-Day
  10. 外卖小哥高考623分!查分后淡定送外卖
  11. python程序的扩展名是perl程序的扩展名是_Python 程序扩展名(py, pyc, pyw, pyo, pyd)及发布程序时的选择...
  12. Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】...
  13. 西门子s300编程实例_plc西门子s300编程 西门子编程1000例
  14. PreScan传感器(二)——TIS传感器
  15. python颜色代码表_[matplotlib] 颜色设置及Matplotlib颜色对照表
  16. dcs world f15c教学_高端DCS带电清洗用的什么清洗剂
  17. FileRecv VNCViewer 使用方法
  18. 乐视盒子UI 官方下载地址
  19. html把div做成透明,Html-Css-div半透明
  20. linux怎么下载dnw工具,Deepin Linux 安装dnw工具

热门文章

  1. 人脸老化,让你预见30年后的自己
  2. QQ好友列表的实现(QQ9.0版本样式) -- 使用QTreeView
  3. 在GitHub上轻松搭建博客
  4. VsCode配置MarkDown
  5. selenium项目实战(四):完成测试用例
  6. Mac如何配置host
  7. 删除node_modules文件夹后重新安装插件后执行npm run build报错问题的解决办法
  8. oracle 模拟表,oracle模拟考试
  9. c语言中的类结构体-点号
  10. 【AUTOSAR-CanSM】-2.4-参数CanSMBorTimeTxEnsured详解