社区讨论
珂朵莉树RE+TLE求调
P1558色板游戏参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m1q7064o
- 此快照首次捕获于
- 2024/10/01 16:44 去年
- 此快照最后确认于
- 2024/10/01 16:44 去年
样例通过
我的代码:
CPP#include<bits/stdc++.h>
using namespace std;
int l,t,o;
bool col[35];
struct node{
int l,r;
mutable int v;
node(int l,int r,int v):l(l),r(r),v(v){}
bool operator<(const node&rhs)const{
return l<rhs.l;
}
};
set<node>s;
auto split(int pos){
auto it=s.lower_bound(node(pos,0,0));
if(it!=s.end()&&it->l==pos){
return it;
}
it--;
int l=it->l,r=it->r,v=it->v;
s.erase(it);
s.insert(node(l,pos-1,v));
return s.insert(node(pos,r,v)).first;
}
void update(int l,int r,int v){
auto en=split(r+1),bg=split(l);
s.erase(bg,en);
s.insert(node(l,r,v));
}
int getsum(int l,int r){
auto en=split(r+1),bg=split(l);
memset(col,false,sizeof(col));
for(auto it=bg;it!=en;it++){
col[it->v]=true;
}
int res=0;
for(int i=1;i<=t;i++){
res+=col[i];
}
return res;
}
int main(){
scanf("%d %d %d\n",&l,&t,&o);
s.insert(node(1,l,1));
while(o--){
char opt;
int a,b,c;
scanf("%c ",&opt);
if(opt=='C'){
scanf("%d %d %d\n",&a,&b,&c);
update(a,b,c);
}
else{
scanf("%d %d\n",&a,&b);
printf("%d\n",getsum(a,b));
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...