D. Playoff Tournament
Example
inputCopy
3
0110?11
6
5 1
6 ?
7 ?
1 ?
5 ?
1 1
outputCopy
1
2
3
3
5
4
线段树nlogn
遇到 ? 该节点的值为左子树加右子树
遇到 1 该节点的值为右子树
遇到 0 该节点的值为左子树

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int maxn=(1<<18)+100;
int a[maxn];
char s[maxn];
map<int,int>mp,mp2;//映射:最后一场比赛对应线段树节点1 最后两场对应 2 3 以此类推
struct node
{int l,r,sum;char op;
} t[maxn*4];
void build(int l,int r,int k)
{t[k].l=l;t[k].r=r;t[k].op=s[mp2[k]];if(l==r){t[k].sum=1;return ;}int mid=(l+r)>>1;build(l,mid,k<<1);build(mid+1,r,k<<1|1);if(t[k].op=='?')t[k].sum=t[k<<1|1].sum+t[k<<1].sum;if(t[k].op=='1')t[k].sum=t[k<<1|1].sum;if(t[k].op=='0')t[k].sum=t[k<<1].sum;
}
signed main()
{IOSint k,q;cin>>k;;cin>>(s+1);cin>>q;int n=(1<<k)-1;int cnt=1;int num=0;int sm=1;while(sm!=n){for(int i=n-sm+1; i<=n-sm+1+cnt-1; i++){mp[i]=++num;mp2[num]=i;}cnt=cnt*2;sm+=cnt;}for(int i=n-sm+1; i<=n-sm+1+cnt-1; i++){mp[i]=++num;mp2[num]=i;}build(1,n+1,1);//for(int i=1;i<=7;i++)cout<<t[i].sum<<" ";//for(int i=8;i<=15;i++)cout<<t[i].sum<<" ";while(q--){int id;string str;cin>>id>>str;s[id]=str[0];t[mp[id]].op=str[0];int p=mp[id];while(p!=1){if(t[p].op=='?')t[p].sum=t[p<<1|1].sum+t[p<<1].sum;if(t[p].op=='1')t[p].sum=t[p<<1|1].sum;if(t[p].op=='0')t[p].sum=t[p<<1].sum;p=p>>1;}if(t[p].op=='?')t[p].sum=t[p<<1|1].sum+t[p<<1].sum;if(t[p].op=='1')t[p].sum=t[p<<1|1].sum;if(t[p].op=='0')t[p].sum=t[p<<1].sum;cout<<t[1].sum<<"\n";}
}

D. Playoff Tournament相关推荐

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

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

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

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

  3. CodeForces 1535D : Playoff Tournament 二叉树

    传送门 题意 分析 模拟一颗二叉树,找到待修改的节点然后向上维护即可 代码 #pragma GCC optimize(3) #include <bits/stdc++.h> #define ...

  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. CF1535D. Playoff Tournament(线段树维护)

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

  6. 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 ...

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

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

  8. @UPC8377 @ACM-ICPC-2018-ASIA YOKAHAMA REGIONAL D: Playoff (DFS)

    Playoff 时间限制: 5 Sec  内存限制: 128 MB 提交: 56  解决: 13 [提交] [状态] [讨论版] [命题人:admin] 题目描述 The Minato Mirai F ...

  9. 8377: Playoff

    8377: Playoff 时间限制: 2 Sec  内存限制: 128 MB 提交: 99  解决: 28 [提交] [状态] [讨论版] [命题人:admin] 题目描述 The Minato M ...

最新文章

  1. MPB:南农韦中组-​铁载体对根际细菌互作效应的介导作用研究方法
  2. 网络天才网页中文版_LVMH 旗下奢侈品电商 24S 的中文版正式上线,还有带来“双 11”优惠...
  3. SpringMVC:后台将List转为Json,传值到页面
  4. java读取json数据并解析输出对象
  5. 算法与数据结构(part2)--Python内置类型性能分析
  6. apache OFBiz的安装
  7. C#动态操作DataTable(新增行、列、查询行、列等)
  8. 浅谈 C++ 中的 new/delete 和 new[]/delete[]
  9. AI算法连载22:统计之边际概率推断
  10. pe常用软件_装机不求人之打造自己的全功能PE系统维护优盘
  11. vue list数组合并和插入数据
  12. Caffe学习:使用pycaffe生成mean_file.py文件
  13. IDEA中创建maven web的详细部署
  14. android 注册多个服务器,android-根据服务器响应创建多个处理程序并...
  15. Dubbo底层源码解析
  16. Mac Os 安装配置Maven以及IntelliJ IDEA Maven使用
  17. html页面360极速浏览器不兼容,html页面在360极速浏览器样式不兼容
  18. Vue 记录一次安装插件引起的项目崩溃(This is probably not a problem with npm,there is likely additional logging outp)
  19. vue3 script setup写法
  20. 设置柱状图每根柱子的颜色

热门文章

  1. 使用js判断当前使用的浏览器
  2. apache 禁用rc4_(转载)Tomcat禁用SSLv3和RC4算法
  3. mysql 组内分组_[MySQL] group by 分组并进行组内排序取得最新一条
  4. 锐捷交换机显示服务器,锐捷交换机查看时间命令
  5. 华清远见-重庆中心-前端阶段技术总结
  6. http://www.xueh188.top/index.php/archives/40/
  7. 征信小知识︱逾期记录怎么清除,能“铲单”吗?
  8. 微博营销技巧之软文写作
  9. 自己为孩子开发的字帖工具
  10. GeoHash 算法