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; }

随机推荐

  1. 多进程池Flask实战应用

    多进程池Flask实战应用 import json import math import flask from concurrent.futures import ProcessPoolExecuto ...

  2. Android 13 - Media框架(20)- ACodec(二)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节开始我们就来学习 ACodec 的实现 1.创建 ACodec ACodec 是在 MediaCodec 中创建的,这里先贴出创建部分的代码: ...

  3. Android 13 - Media框架(19)- ACodec(一)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将会一起了解 ACodec 的设计方式,在看具体的实现细节前我们要先了解它内部的状态转换机制,这也是ACodec的核心难点之一. 1.AH ...

  4. windows下IPv6通信(C++、MFC)

    Server #include <stdio.h> #include <Ws2tcpip.h> #include <winsock2.h> #define HELL ...

  5. vmware vmnat1和vmnat8在真机网络适配器中消失

    在真机的网络适配器中,发现只有两张网卡.缺少vmnat1和vmnat8 一,查看虚拟网络编辑器是否连接 二,如果没有连接,勾选连接就好了. 三,如果连接了,真机网络适配器仍然只有两张网络适配器. 1. ...

  6. ansible常用模块的学习

    ansible常用模块列表: 1.file 点击查看代码 2.copy 点击查看代码 3.yum--repository 点击查看代码 4.yum 点击查看代码 5.service 点击查看代码 6. ...

  7. JavaSE 标签 break continue

    *标签.break.continue 当需要结束多个循环后,则使用标签 label:for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(j==2) ...

  8. Vue第三方库与插件实战手册

    title: Vue第三方库与插件实战手册 date: 2024/6/8 updated: 2024/6/8 excerpt: 这篇文章介绍了如何在Vue框架中实现数据的高效验证与处理,以及如何集成E ...

  9. cdn静态资源加速

    阿里云cdn产品 https://www.aliyun.com/product/cdn CDN通过广泛的网络节点分布,提供快速.稳定.安全.可编程的全球内容分发加速服务,支持将网站.音视频.下载等内容 ...

  10. 3个线程分别交替输出xyz字符,输出10遍

    一位群友分享的**公司面试题 3个线程分别交替输出xyz字符,输出10遍 public class XYZ implements Runnable { private static AtomicInt ...