P3514 [POI2011] LIZ-Lollipop

news/2025/1/15 22:36:34/文章来源:https://www.cnblogs.com/maburb/p/18673846

题意:给你一个字符串,'T'代表2, 'W'代表1。\(m\)次询问,每次问你有没有一个区间和等于\(x\),有则输出一个区间,否则输出"NIE"。

我们观察只给1和2这两个值有什么用,如果我们知道\(x\)是有的,并且区间为\(l_x\)\(r_x\),那么如果\(s[l_x]\) 或者 \(s[r_x]\)为2,是不是能推出\(x-2\),否则两边都是1,也能推出\(x-2\),所有如果\(x\)存在,那么小于\(x\)的且和\(x\)奇偶性相同的数也存在。
那么我们找到最大的奇数和偶数就行了,先求\(sum_n\),得到一个最大的数,然后左右找一个奇数区间,减去后就得到另一个最大的数。然后从大到小循环确定方案就行了。

点击查看代码
void solve() {int n, m;std::cin >> n >> m;std::string s;std::cin >> s;std::vector<int> sum(n + 1);for (int i = 0; i < n; ++ i) {sum[i + 1] = sum[i] + (s[i] == 'T' ? 2 : 1);}std::vector<int> l(2 * n + 1, n + 1), r(2 * n + 1);l[sum[n]] = 1; r[sum[n]] = n;for (int i = 1; i <= n; ++ i) {if (sum[i] & 1) {l[sum[n] - sum[i]] = i + 1;r[sum[n] - sum[i]] = n;break;}}for (int i = n; i >= 1; -- i) {if ((sum[n] - sum[i - 1]) & 1) {l[sum[i - 1]] = 1;r[sum[i - 1]] = i - 1;}}for (int i = 2 * n; i >= 2; -- i) {if (l[i] <= r[i]) {if (s[l[i] - 1] == 'T') {l[i - 2] = l[i] + 1;r[i - 2] = r[i];} else if (s[r[i] - 1] == 'T') {l[i - 2] = l[i];r[i - 2] = r[i] - 1;} else {l[i - 2] = l[i] + 1;r[i - 2] = r[i] - 1;}}}while (m -- ) {int x;std::cin >> x;if (x <= 2 * n && l[x] <= r[x]) {std::cout << l[x] << " " << r[x] << "\n";} else {std::cout << "NIE\n";}}
}

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

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

相关文章

Centos7.9安装kerberos

Centos7.9安装kerberos@目录一、背景二、Kerberos安装部署2.1kerberos服务端必要软件安装2.2配置krb5.conf2.3配置kdc.conf2.4配置kadm5.acl2.5创建Kerberos数据库2.6启动Kerberos服务2.7创建Kerberos管理员principal2.8客户端安装kerberos2.9Kerberos功能验证本人其他相关文章…

并发编程 - 初识线程

线程是操作系统单独执行任务的最小单元,分前台和后台,有优先级,经历多个状态。C#可设置线程优先级和类型,控制线程状态的方法有Start、Sleep等,但Suspend和Abort已被弃用。多线程编程需通过同步机制控制线程执行。01、什么是线程? 要深刻理解什么是线程,就需要了解计算机…

Wgpu图文详解(05)纹理与绑定组

前言 什么是纹理? 纹理是图形渲染中用于增强几何图形视觉效果的一种资源。它是一个二维或三维的数据数组,通常包含颜色信息,但也可以包含其他类型的数据,如法线、高度、环境光遮蔽等。纹理的主要目的是为几何图形的表面提供详细的视觉效果,使其看起来更加真实和复杂。而我…

DeepSeek V3:AI 模型的游戏规则改变者

DeepSeek V3:AI 模型的游戏规则改变者 什么是DeepSeek V3? DeepSeekDeepSeek V3:AI 模型的游戏规则改变者什么是DeepSeek V3? DeepSeek V3是一款具有革命性的混合专家(MoE)模型,总参数达6710亿,每个标记激活370亿参数 。MoE方法允许多个专门模型(即“专家”)在门控网…

Opencv 的下载安装和VisualStudio配置

本文详细介绍了Windows系统下Opencv 的下载安装和VisualStudio配置过程。Opencv 的下载安装和VisualStudio配置 1 opencv-windows的下载 1.1 github直接下载链接(需要外网链接) 最新4.10.0版本的下载链接为: https://github.com/opencv/opencv/releases/download/4.10.0/openc…

G1原理—8.如何优化G1中的YGC

大纲 1.5千QPS的数据报表系统发生性能抖动的优化(停顿时间太小导致新生代上不去) 2.由于产生大量大对象导致系统吞吐量降低的优化(大对象太多频繁Mixed GC) 3.YGC其他相关参数优化之TLAB参数优化 4.YGC其他相关参数优化之RSet、PLAB和大对象的处理优化1.5千QPS的数据报表系统发…

【JavaSecLab靶场】Java综合漏洞平台

免责声明: 请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。在我们平时的网络安全工作中,经常会面对各种各样的挑战。比如,进行定期的漏洞扫描、代码审计,甚至是参与红蓝对抗演练时,发现漏洞后往往需要及时将其修复。 最近,我接触到了一款开…

黑群晖最新安装方式|RR新手

引导盘制作 1、下载最新的黑群晖引导镜像原版链接:wjz304/rr 百度云盘:链接:https://pan.baidu.com/s/12z3v_kVYUDdWNzWBWN_NTQ?pwd=e67k2、将下载好的压缩包解压,得到一个后缀为img的文件。3、使用写盘工具Rufus将镜像文件写到u盘中,点击选择,找到解压好后缀为img的文件…

【Node.js渗透】安装与检测基于Electron的应用程序

免责声明: ⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!三、说明 传送门:【Node.js开发】Electron 框架介绍,我们已经了解了创建简单Electron应用程序的过程。 本文将…

器件选型---晶振

如何选型晶振,有那些选型注意事项器件选型---晶振 晶振的种类和区别 晶振大体可分为无源晶振和有源晶振两类,其区别如下:无源晶振(crystal,谐振器):内部是两侧贴着金属极板的石英晶体,必须要依赖外部电路才能进行稳定的震动;无源晶振一般会采取下面的接法来与MCU内部的…

Windows自定义变量打开文件或文件夹

前言全局说明Windows 系统自带很多变量,方便使用。 参照系统设置,我们可以自定义一些变量,快速打开文件或文件夹。 例如: 在运行或文件夹地址栏输入 %TEMP% 就能打开对应文件夹一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.37371.2 环境变量位置 用户变量:自定义的文…

鼠标双击连击解决方案

前言 手里的这是第二个才用1年多就出现双击现象的G102了,太不耐操。我算是信了那群广告狗的邪,才又选了这个鼠标。 鼠标双击解决方法主要有以下几种:玄学方法:朝鼠标里哈一口气; 使用软件忽视短暂间隔内的点击行为; 拆鼠标,调整微动; 重买,选光微动+光手轮USB有线鼠标…