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;
}
随机推荐
- 多进程池Flask实战应用
多进程池Flask实战应用 import json import math import flask from concurrent.futures import ProcessPoolExecuto ...
- Android 13 - Media框架(20)- ACodec(二)
关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节开始我们就来学习 ACodec 的实现 1.创建 ACodec ACodec 是在 MediaCodec 中创建的,这里先贴出创建部分的代码: ...
- Android 13 - Media框架(19)- ACodec(一)
关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将会一起了解 ACodec 的设计方式,在看具体的实现细节前我们要先了解它内部的状态转换机制,这也是ACodec的核心难点之一. 1.AH ...
- windows下IPv6通信(C++、MFC)
Server #include <stdio.h> #include <Ws2tcpip.h> #include <winsock2.h> #define HELL ...
- vmware vmnat1和vmnat8在真机网络适配器中消失
在真机的网络适配器中,发现只有两张网卡.缺少vmnat1和vmnat8 一,查看虚拟网络编辑器是否连接 二,如果没有连接,勾选连接就好了. 三,如果连接了,真机网络适配器仍然只有两张网络适配器. 1. ...
- ansible常用模块的学习
ansible常用模块列表: 1.file 点击查看代码 2.copy 点击查看代码 3.yum--repository 点击查看代码 4.yum 点击查看代码 5.service 点击查看代码 6. ...
- JavaSE 标签 break continue
*标签.break.continue 当需要结束多个循环后,则使用标签 label:for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(j==2) ...
- Vue第三方库与插件实战手册
title: Vue第三方库与插件实战手册 date: 2024/6/8 updated: 2024/6/8 excerpt: 这篇文章介绍了如何在Vue框架中实现数据的高效验证与处理,以及如何集成E ...
- cdn静态资源加速
阿里云cdn产品 https://www.aliyun.com/product/cdn CDN通过广泛的网络节点分布,提供快速.稳定.安全.可编程的全球内容分发加速服务,支持将网站.音视频.下载等内容 ...
- 3个线程分别交替输出xyz字符,输出10遍
一位群友分享的**公司面试题 3个线程分别交替输出xyz字符,输出10遍 public class XYZ implements Runnable { private static AtomicInt ...