Playoff Tournament

news/2024/10/10 8:15:11

算法

暴力思路显然
观察到更改操作最多只影响一条链
于是显然

代码

#include <bits/stdc++.h>
const int MAXLEN = 263000;int k;
std::string Result;int q;
int Match;
char New_Result;int pows[20] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288};int State[MAXLEN];int Left_Son[MAXLEN];
int Right_Son[MAXLEN];
int Fa[MAXLEN];
void solve1_init()
{for (int i = 1; i <= pows[k] - 2; i++){if (i % 2)Left_Son[i + pows[k - 1] - i / 2] = i, Fa[i] = i + pows[k - 1] - i / 2;elseRight_Son[i + pows[k - 1] - i / 2] = i, Fa[i] = i + pows[k - 1] - i / 2;}Fa[pows[k] - 1] = -1;for (int i = 1; i <= pows[k - 1]; i++){Left_Son[i] = -1;Right_Son[i] = -1;}for (int i = 1; i <= pows[k - 1]; i++){if (Result[i] == '0' || Result[i] == '1'){State[i] = 1;}else{State[i] = 2;}}for (int i = pows[k - 1] + 1; i <= pows[k] - 1; i++){if (Result[i] == '0'){State[i] = State[Left_Son[i]];}else if (Result[i] == '1'){State[i] = State[Right_Son[i]];}else{State[i] = State[Left_Son[i]] + State[Right_Son[i]];}}
}void solve1()
{Result[Match] = New_Result;for (int i = Match; ~i; i = Fa[i]){if(Result[i] == '0' && i > pows[k - 1]){State[i] = State[Left_Son[i]];}else if (Result[i] == '1' && i > pows[k - 1]){State[i] = State[Right_Son[i]];}else if (i > pows[k - 1]){State[i] = State[Left_Son[i]] + State[Right_Son[i]];}else{State[i] = (Result[i] == '0' || Result[i] == '1') ? 1 : 2;}}printf("%d\n", State[pows[k] - 1]);
}int main()
{//freopen("tournament.in", "r", stdin);//freopen("tournament.out", "w", stdout);scanf("%d", &k);std::cin >> Result;Result = ' ' + Result;scanf("%d", &q);solve1_init();for (int i = 1; i <= q; i++){scanf("%d", &Match);getchar();scanf("%c", &New_Result);if(q <= 100 && k <= 6)solve1();elsesolve1();}return 0;
}/*
3
0110?11
6
5 1
6 ?
7 ?
1 ?
5 ?
1 11
2
3
3
5
4
*/

总结

树型结构常见优化套路题
以前也没见过啊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/69659.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

架构与思维:漫谈高并发业务的CAS及ABA

1 高并发场景下的难题 1.1 典型支付场景 这是最经典的场景。支付过程,要先查询买家的账户余额,然后计算商品价格,最后对买家进行进行扣款,像这类的分布式操作, 如果是并发量低的情况下完全没有问题的,但如果是并发扣款,那可能就有一致性问题。在高并发的分布式业务场景中…

The Number of Pairs

算法 数据范围一眼数学题 然而考场并没有思路 这一类题显然要将 \(\gcd{(a, b)}\) 消掉或者表示 ( \(\rm{lcm}{(a, b)}\) 可以用 \(\gcd{(a, b)}\) 表示) 考虑 \(a = \gcd{(a, b)} * k_1\) 和 \(b = \gcd{(a, b)} * k_2\) 开始化简然后可以求出 \(\rm{lcm}{(a, b)} = \frac{k_1…

.NET周刊【9月第5期 2024-09-29】

国内文章 Windows 调试工具课程 https://www.cnblogs.com/lindexi/p/18421353 本文是关于如何使用Windows调试工具解决软件故障的课程记录,适合初学者。作者介绍了解决软件崩溃的策略,从用户反馈开始,利用事件查看器和任务管理器等工具找出问题根源。事件查看器可以给出软件…

.NET 9 RC 2正式发布

距离最终版本还有一个月的时间,Microsoft 已经交付了 .NET 9 的第二个也是最后一个候选版本。.NET 团队在公告帖子中写道[1],“当我们为 11 月的 .NET 9 正式发布 (GA) 版本做准备时,我们正在对性能、稳定性和任何其他优化进行最后的润色,使其成为 .NET 9 的最佳版本。.N…

读数据工程之道:设计和构建健壮的数据系统04数据工程生命周期(下)

数据工程生命周期(下)1. 获取 1.1. 在了解数据源、所用源系统的特征以及数据的存储方式之后,你需要收集数据 1.2. 数据工程生命周期的下一阶段是从源系统中获取数据1.2.1. 源系统和获取代表了数据工程生命周期中最重要的瓶颈1.2.2. 源系统通常不在你的直接控制范围内,可能会…

两台iStoreOS路由器通过wireguard实现异地组网

一、前言 我在家中和单位宿舍申请了两条联通千兆宽带,每条均有公网ip,如何实现更多玩法呢?最近折腾了一下异地组网,这里简单记录一下 环境:路由器A,内网ip为192.168.1.1,系统为iStoreOS, 路由器B,内网ip为192.168.0.1,系统和版本号同上 至少有一条具有公网ip的宽带,…

1panel搭建frp服务端并使用openresty反向代理实现https访问

前言 这次国庆节回老家发现家里的路由器居然是我去年带过去的斐讯K2p,已经刷了openwrt,于是想着有没有更多玩法?因为家里的宽带是移动宽带,没有公网IP,所以来折腾一下frp内网穿透。 我想实现的目标是:通过不同的三级域名,来访问不同的服务。例如,访问https://op.frp.xx…

004、v3admin学习,使用ci4搭建后端服务器

1、按照php环境和composer,输入cmd的composer命令,版本是2.7.9 2、在工作目录,输入命令行composer create-project codeigniter4/appstarter ci4 ,会全自动创建工程 3、把composer下来的文件,拷贝到外面工程中。 4、用phpstorm打开工程,更新一下依赖包 5、用小皮桌面开启p…