ABC341
E
link
这个题目中所说的好的其实就是像\(010101\)这样一个\(0\),一个\(1\)的字符串。
那么不好的就是两个\(0\)或两个\(1\)在一起,所以判断一个区间好不好只需要判断一个区间内有没有两个\(0\)或两个\(1\)在一起,那么我们可以把两个\(0\)或两个\(1\)在一起的位置存下来。
先考虑查询操作。
我们只需要判断\(l\)到\(r\)之间有没有两个\(0\)或两个\(1\)在一起,如果所存的位置是升序的,可以直接用二分来做,于是想到了\(set\)。
再考虑修改。
其实修改就是开头和结尾会改变,那么如果原来的开头是好的(\(set\)里没有),那么会变成坏的,反之亦然。结尾也一样。
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,q;
char s[500005];
set<int> st;
signed main(){
cin >> n >> q;
cin >> s+1;
for(int i = 2;i <= n;++ i)
if(s[i] == s[i-1]) st.insert(i);
while(q--){
int op,l,r;
cin >> op >> l >> r;
if(op == 1){
if(l > 1){
if(st.count(l)){
st.erase(l);
}
else st.insert(l);
}
if(r < n){
if(st.count(r+1)){
st.erase(r+1);
}
else st.insert(r+1);
}
}
if(op == 2){
auto it = st.upper_bound(l);
if(it == st.end()||*it > r){
cout << "Yes\n";
}
else cout << "No\n";
}
}
return 0;
}
随机推荐
- HTML——input之密码框
在 HTML 中,把 <input> 标签的 type 属性设置为 password 可以表示密码框.具体语法格式如下: <input type="password&quo ...
- 数据分析---numpy模块
前戏 NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库.重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型.多维数组上执行的数值运算. 快捷 ...
- WPF 中使用附加属性解决 PasswordBox 的数据绑定问题
1.前言 在 WPF 开发中 View 中的数据展示我们常通过 Binding 进行绑定.但是,使用 Binding 有一个前提:绑定的目标只能是依赖属性. 而 PasswordBox 控件中的 Pa ...
- windows7 + Qt(MSVC2017) + VS2019安装配置
在windows下使用qt时调用QWebEngineView 库会报错,即使在pro文件QT += webenginewidgets也找不到, 而在MinGW和MSVC2015的路径下我并没有找到这个 ...
- foxy与galactic解析rosbag的不同之处
前言 foxy和galactic版本在rosbag2_storage这个包的调整有点大(头文件及接口的命名空间),下面的代码仅供参考使用 foxy #include "db3_reader. ...
- python 如何判断一组数呈上升还是下降趋势
1. python 判断一组数呈上升还是下降趋势的方法 要判断一组数(数列)是呈上升趋势.下降趋势还是无明显趋势,我们可以比较数列中相邻元素的差值.如果大部分差值都是正数,则数列呈上升趋势:如果大部分 ...
- LidarView工程搭建指南
前言 笔者做过一段时间的车载LiDAR开发,对LidarView开源项目进行过深度定制,摸索了一套LidarView软件的开发和调试方法 1 软件安装 1.1 安装准备 以Windows10系统平台为 ...
- 有点东西,template可以直接使用setup语法糖中的变量原来是因为这个
前言 我们每天写vue3代码的时候都会使用到setup语法糖,那你知道为什么setup语法糖中的顶层绑定可以在template中直接使用的呢?setup语法糖是如何编译成setup函数的呢?本文将围绕 ...
- Java泛型对象在http请求和响应对象中的封装
Java泛型对象在http请求和响应对象中的封装 public class MySystemBaseResVo<T> { //注意:类的后面需要带上<T>,否则数据无法封装 p ...
- Windows CSC提权漏洞复现(CVE-2024-26229)
漏洞信息 Windows CSC服务特权提升漏洞. 当程序向缓冲区写入的数据超出其处理能力时,就会发生基于堆的缓冲区溢出,从而导致多余的数据溢出到相邻的内存区域.这种溢出会损坏内存,并可能使攻击者能够 ...