社区讨论
建议加强数据
P3740[HAOI2014] 贴海报参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miufropi
- 此快照首次捕获于
- 2025/12/06 23:16 2 个月前
- 此快照最后确认于
- 2025/12/09 18:15 2 个月前
裸线段树直接艹过去了
CPP#include<bits/stdc++.h>
using namespace std;
#define debug() cerr<<"I Will AK\n"
#define N 200007
struct tree{
short val,lazy;
}tr[10000000<<2];
int b[N],l[N],r[N];
int a[N],n,q;
short c[10000000];
int t[100000];
void push_up(int rt){
tr[rt].val=tr[rt<<1].val+tr[rt<<1|1].val;
}
void push_down(int rt,int l,int r){
if(tr[rt].lazy!=0){
tr[rt<<1].lazy=tr[rt].lazy;
tr[rt<<1|1].lazy=tr[rt].lazy;
int mid=(l+r)>>1;
tr[rt<<1].val=tr[rt].lazy*(mid-l+1);
tr[rt<<1|1].val=tr[rt].lazy*(r-mid);
tr[rt].lazy=0;
}
}
int query(int rt,int l,int r,int ql,int qr){
if(ql<=l&&qr>=r) return tr[rt].val;
push_down(rt,l,r);
int mid=(l+r)>>1;
if(qr<=mid) return query(rt<<1,l,mid,ql,qr);
if(ql>mid) return query((rt<<1)|1,mid+1,r,ql,qr);
return query(rt<<1,l,mid,ql,qr)+query((rt<<1)|1,mid+1,r,ql,qr);
}
void update(int rt,int l,int r,int ul,int ur,int add){
if(ul<=l&&ur>=r){
tr[rt].val=add*(r-l+1);
tr[rt].lazy=add;
return;
}
push_down(rt,l,r);
int mid=(l+r)>>1;
if(ul<=mid) update(rt<<1,l,mid,ul,ur,add);
if(ur>mid) update((rt<<1)|1,mid+1,r,ul,ur,add);
push_up(rt);
}
void build(int rt,int l,int r){
if(l==r) tr[rt].val=0;
else{
int mid=(l+r)>>1;
build(rt<<1,l,mid);
build(rt<<1|1,mid+1,r);
push_up(rt);
}
}
void out(int rt,int l,int r){
if(l==r) c[l]=tr[rt].val;
else{
int mid=(l+r)>>1;
push_down(rt,l,r);
out(rt<<1,l,mid);
out(rt<<1|1,mid+1,r);
}
}
signed main(){
//freopen("1.in","r",stdin);
//freopen(".out","w",stdout);
int n,m;
cin>>m;
cin>>n;
int cnt=0,tot=0;
for(int i=1;i<=n;++i){
cin>>l[i]>>r[i];
update(1,1,m,l[i],r[i],i);
}
out(1,1,m);
for(int i=1;i<=10000000;++i){
t[c[i]]++;
}
int ans=0;
for(int i=1;i<=1000;++i){
if(t[i]) ++ans;
}
cout<<ans;
return 0;
}
4
可以看到,只是加了几个short而已
回复
共 0 条回复,欢迎继续交流。
正在加载回复...