Solution - Codeforces 1190C Tokitsukaze and Duel

news/2024/11/14 21:20:31/文章来源:https://www.cnblogs.com/rizynvu/p/18546824

考虑到两人对应的操作是相同的,于是可以从对称的角度来思考。

考虑到在先手做出操作后,后手一个较为特殊的操作是不做任何影响,也就是重复先手的操作。
能够发现如果对于后手这不能必胜,那么他一定不会去产生影响,并又把这个局面留给先手,相当于是先后手的交换。
对于先手又是同样的,因为两人操作相同,对于他也是不必胜的,那么他也会重复操作留给后手,那么就平局了。

于是能够知道的是,如果初始状态就能必胜,那么先手必胜。
否则如果无论先手怎样操作,后手都能必胜的话,后手必胜。
否则就是先手存在一种方式,使得操作后后手不能必胜,那么两人就会一直重复第一次的操作,最终平局。

对于判断,可以提前预处理好前缀同色段的长度与后缀连续段的长度。
通过分讨操作所在的段的左右两方的是否同色,长度与 \(k\) 的大小关系,以及 \(s_1, s_n\) 的相等关系即可判断得出先 / 后手是否必赢。

时间复杂度 \(\mathcal{O}(n)\)

#include<bits/stdc++.h>
constexpr int maxn = 1e5 + 10;
int n, k;
char s[maxn];
bool f[maxn], g[maxn];
int main() {scanf("%d%d%s", &n, &k, s + 1);f[0] = true;for (int i = 1; i <= n; i++) {f[i] = f[i - 1] && (s[i] == s[1]);}g[n + 1] = true;for (int i = n; i; i--) {g[i] = g[i + 1] && (s[i] == s[n]);}if (f[n - k] || g[k + 1]) {return puts("tokitsukaze"), 0;}for (int l = 1, r = k; r <= n; l++, r++) {if (f[l - 1] && g[r + 1] && s[1] == s[n]) {return puts("tokitsukaze"), 0;}}bool fl = true;for (int l = 1, r = k; r <= n; l++, r++) {for (char c : {'0', '1'}) {bool gl = l > 1 && (! f[l - 1] || c != s[1]);bool gr = r < n && (! g[r + 1] || c != s[n]);if ((gl && gr) || (gl && l - 1 > k) || (gr && n - r > k)) {fl = false;break;}}}puts(fl ? "quailty" : "once again");return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙NEXT开发案例:年龄计算

​ 【引言】 本案例的目标是开发一款年龄计算器应用,该应用能够根据用户输入的出生日期,计算出用户的实际年龄、虚岁、星座、生肖等信息。同时,应用还将提供距离下次公历和农历生日的天数及星期等信息。为了实现这些功能,我们将使用ArkTS和ArkUI作为开发语言,并借助@nutpi…

Dosbox-x安装WinXP——图文教程

很多老游戏只能在win95、98或者XP中运行,因此,很多人尝试将Win95、98安装到Dosbox中,利用Dosbox来玩那些久远的情怀。有Win98自然就有人想在Dosbox中安装更高级的Win系统,于是就有人尝试在Dosnox中安装Win2000、WinXP的,其中2023-07-03在国外的fabulous.systems出现了一篇…

ABB AC900F学习笔记331:使用ST做自定义功能块,计算最近60秒的分钟均值和最近60分钟的小时均值

前面自己学习了在西门子TIA使用SCL编程,施耐德Unity中使用ST编程做分钟均值和小时均值的方法,今晚在家练习了在ABB Freelance中自定义功能块使用ST语言做分钟均值和小时均值。 新建项目、插入硬件、仿真器、操作站等不做介绍。新建一个用户功能块池,下面建一个功能块类。功能…

DBeaver如何设置自动刷新数据库表的数据,彻底解放双手!

前言 大家好,我是小徐啊。 DBeaver是一款常用的数据库连接工具,它的优点是免费使用,而且支持的数据库类型超级多,甚至可以直接安装数据库对应的驱动jar包来连接数据库。 比如达梦数据库,之前版本是可以通过jar包方式设置驱动来连接达梦数据库的。好了,言归正传,今天小徐…

Intellij IDEA如何设置中文版?安装中文汉化包插件?失败问题解决!

前言 大家好,我是小徐啊。 Intellij IDEA默认是英文的操作界面,因为是外国人开发的嘛~对于英文好一点的同学来说,英文就英文吧,但对于英文比较差的同学,就还是希望能够汉化一下,变成熟悉的中文。今天小徐就来介绍下如何在IDEA中安装汉化插件,以及在这过程中,我遇到的奇…

TCP_UDP

TCP, UDP Flood 攻击原理TCP Flood攻击配置环境Windows Server 2016配置服务器管理器,创建一个Web服务器并开启该服务器功能kali配置 vim /etc/network/interfacesifup eth0 开启网络 查看Kali ip 信息:修改路由器信息: 拓扑关系如下所示:GNS 3 中修改路由器 R1:GNS3 中修改…

Python用CEEMDAN-LSTM-VMD金融股价数据预测及SVR、AR、HAR对比可视化

全文链接:https://tecdat.cn/?p=38224 原文出处:拓端数据部落公众号分析师:Duqiao Han股票市场是一个复杂的非线性系统,股价受到许多经济和社会因素的影响。因此,传统的线性或近线性预测模型很难有效、准确地预测股票指数的价格趋势。众所周知,深度学习通过逐层特征转换…

java 反序列化 cc4 复现

java 反序列化 cc4 复现复现环境:jdk<=8u65,commonsCollections=4.0 CommonsCollections4.x版本移除了InvokerTransformer类不再继承Serializable,导致无法序列化.但是提供了TransformingComparator为CommonsCollections3.x所没有的,又带来了新的反序列化危险. cc4的执行命令…

ICMP 重定向攻击

ICMP 重定向攻击原理 ICMP (Internet Control Message Protocol) :Internet 控制报文协议,用于在 IP 主机和 路由器之间传递控制消息(控制消息指网络是否通、主机是否可达、路由器是否可用等)ICMP 重定向 在某些特定情况下,路由器在检测到主机使用非优化路由时,会向主机发送…

java 反序列化 cc3 复现

java 反序列化 cc3 复现版本要求:jdk版本<=8u65,common-collections版本<=3.2.1 在很多时候,Runtime会被黑名单禁用.在这些情况下,我们需要去构造自定义的类加载器来加载自定义的字节码. 类加载机制 双亲委派 这里直接粘别人的了.实现一个自定义类加载器需要继承 ClassLo…

使用Tailwind CSS的几个小Tips

前情 Tailwind CSS 是一个原子类 CSS 框架,它将基础的 CSS 全部拆分为原子级别。它的工作原理是扫描所有 HTML 文件、JavaScript 文件以及任何模板中的 CSS 类名,然后生成相应的样式代码并写入到一个静态 CSS 文件中。Tailwind CSS 快速、灵活、可靠、没有运行时负担。自从接…

给朋友写的爬Steam游戏评论的爬虫

详见配图如果你需要的话,可以从这里下载(包括程序、说明和演示视频): https://pan.baidu.com/s/1lN-DNTB7pVXan94hCsqYUQ?pwd=72mg(本来想传蓝奏云的,但是蓝奏云不支持传图片和视频,而且单文件大小有限制,弄起来会比百度云盘还麻烦)