OIer_hjh @ 2024-08-17 19:33:37
hack 数据 AC 了,不知道为啥 RE QAQ
评测记录
(个人感觉码风还好
#include<iostream>
#include<set>
using namespace std;
const int N=1e5+5;
int n,q;
int a[N];
inline int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-'){
f=-1;
}
c=getchar();
}
while(c>='0'&&c<='9'){
x=(x<<3)+(x<<1)+(c-'0');
c=getchar();
}
return x*f;
}
struct node{
int l,r;
mutable int v;
bool operator<(const node &o)const{
return l<o.l;
}
};
set<node> t;
auto split(int m){
if(m>n){
return t.end();
}
auto it=t.upper_bound({m,0,0});
it--;
if(it->l==m){
return it;
}
int l=it->l,r=it->r,v=it->v;
t.erase(it);
t.insert({l,m-1,v});
return t.insert({m,r,v}).first;
}
void Merge(){
for(auto it=t.begin();it!=t.end();it++){
int l=it->l,r,v=it->v;
auto itl=it;
while(it->v==v){
it++;
}
auto itr=it;
it--;
r=it->r;
// cout<<l<<' '<<r<<' '<<v<<endl;
t.erase(itl,itr);
t.insert({l,r,v});
}
}
void assign(int l,int r,int v){
auto itr=split(r+1),itl=split(l);
t.erase(itl,itr);
t.insert({l,r,v});
}
void change(int l,int r){
auto itr=split(r+1),itl=split(l);
for(;itl!=itr;itl++){
// cout<<itl->l<<' '<<itl->r<<' '<<itl->v<<endl;
itl->v=itl->v^1;
}
}
int ask_cnt(int l,int r){
auto itr=split(r+1),itl=split(l);
int cnt=0;
for(;itl!=itr;itl++){
// cout<<itl->l<<' '<<itl->r<<' '<<itl->v<<endl;
if(itl->v){
cnt+=itl->r-itl->l+1;
}
}
return cnt;
}
int ask_max(int l,int r){
auto itr=split(r+1),itl=split(l);
int res=0;
for(;itl!=itr;itl++){
// cout<<itl->l<<' '<<itl->r<<' '<<itl->v<<endl;
if(itl->v){
res=max(res,itl->r-itl->l+1);
}
}
return res;
}
int main(){
n=read();
q=read();
for(int i=1;i<=n;i++){
a[i]=read();
}
for(int i=1;i<=n;i++){
int j=i;
while(a[j+1]==a[i]&&j<=n){
j++;
}
t.insert({i,j,a[i]});
// cout<<i<<' '<<j<<' '<<a[i]<<endl;
i=j;
}
while(q--){
int op=read(),l=read(),r=read();
l++;
r++;
if(op<=1){
assign(l,r,op);
}
if(op==2){
change(l,r);
}
if(op==3){
cout<<ask_cnt(l,r)<<endl;
}
if(op==4){
cout<<ask_max(l,r)<<endl;
}
Merge();
}
return 0;
}
by time_keeper @ 2024-08-17 19:41:30
这题珂朵莉树卡不过的
珂朵莉树似乎只有在随机数据下才能跑
by time_keeper @ 2024-08-17 19:42:30
至少我不会
见这
by OIer_hjh @ 2024-08-18 13:06:36
@yonghu_3913 感谢