CF round 979 div2(D-E)

news/2024/10/21 11:54:50

D

容易观察到需要连续一段区间。这不单点修改区间查询,然后我思维就开始往线段树飘了。。。并且我到这里就以为做完了开始想实现,实际上性质都没观察准确。。
但是因为这是一个1500的题所以显然有不用线段树的解。题解是差分做的,确实差分也可以操作区间
观察到“LR”一定是隔断点,那么我们可以维护非法的隔断点数并用cnt统计,这就使维护只影响到相邻位置
最后要考虑的就是如何分区间(到这里又开始混乱),分割区间条件设为当前最大值等于i,也就是说小的数都在前面了不影响后面
然后就做完了
差分的话就是说前面对后面累计影响为0的时候就可以分割区间

#include <bits/stdc++.h>
const int maxn = 2e5+10, mod = 1e9+7;
using namespace std;
#define int long long
#define double long double
using i64 = long long;
using u64 = unsigned long long;
using u32 = unsigned;
#define lowbit(x) (x&(-x))
int n,k,a[maxn],check[maxn];
string s;
int jud(int x){if(!check[x]&&s[x]=='L'&&s[x+1]=='R')return 1;return 0;
}
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin>>t;while(t--){int n,q;cin>>n>>q;for(int i=1;i<=n;i++){cin>>a[i];check[i]=0;}cin>>s;s='1'+s+'R';int cnt=0;for(int i=1,mx=0;i<=n;i++){mx=max(mx,a[i]);if(mx==i)check[i]=1;cnt+=jud(i);}while(q--){int x;cin>>x;cnt-=(jud(x-1)+jud(x));s[x]=(s[x]=='L')?'R':'L';cnt+= (jud(x-1)+jud(x));if(cnt==0)cout<<"yes"<<endl;else cout<<"NO"<<endl;}}
}

E

计数题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

宝塔面板如何进行反向代理的配置

反向代理在网络架构中充当重要角色,帮助改善网站性能、安全性并提供额外的配置选项。在宝塔面板中实施反向代理配置,涉及的步骤包括:1. 安装并启动必要的软件;2. 配置代理规则以指向目标服务器;3. 优化性能和安全性设置;4. 对配置进行测试验证。在操作中,我们将详细探讨…

Linux模块

ansible-doc -l:查看ansible系统的模块 ansible-doc 加模块名 :具体查看那个模块 ansible-doc -s 加模块名 :具体查看那个模块 ansible重要常用模块命令模块:command shell script文件模块:file copy安装模块:yum服务模块:service定时模块:cron挂载模块:mount…

Python中的深拷贝与浅拷贝

目录1. 可变对象和不可变对象2. 用=赋值的问题3. copy模块登场4. 重新认识列表对象5. 浅拷贝,深拷贝浅拷贝(copy.copy())一维列表的浅拷贝深拷贝(copy.deepcopy())浅拷贝,深拷贝,直接赋值的区别 1. 可变对象和不可变对象 在 Python 中,数据类型可以分为两大类:可变对象和…

015 时间==事件修饰符

例如prevent对click进行修饰,阻止点击后跳转链接的默认行为其他一些较常用的

小学班级海报

这张图片是一张庆祝国际劳动节的海报,充满了节日的喜庆与对劳动者的崇高敬意。 海报的背景以红色为主色调,象征着热情与活力,营造出一种积极向上的氛围。在海报中央,一个巨大的红色数字“5”与“劳动节”的字样相结合,形成了鲜明的视觉焦点,让人一眼就能感受到节日的主题…