社区讨论
T3个点,比纯暴力还慢...
P3740[HAOI2014] 贴海报参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mi6hlbn9
- 此快照首次捕获于
- 2025/11/20 05:00 4 个月前
- 此快照最后确认于
- 2025/11/20 05:00 4 个月前
CPP
#include <bits/stdc++.h>
#define N 10000001
using namespace std;
int n,m,flag,ans=0,a[N],b[N],X[N<<2];
int gi()
{
int x=0,w=1;char ch=getchar();
while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if (ch=='-') w=-1,ch=getchar();
while (ch>='0'&&ch<='9')
{
x=x*10+ch-'0';
ch=getchar();
}
return x*w;
}
void update(int i,int l,int r,int L,int R)
{
if(X[i]) return;//如果已经被染,返回
if(L<=l&&r<=R)
{
flag=1;
X[i]=1;
return;
}
if(l==r) return ;
int mid=(l+r)>>1;
if(R<=mid) update(i<<1,l,mid,L,R);
else if(mid<L) update(i<<1|1,mid+1,r,L,R);
else update(i<<1,l,mid,L,R),update(i<<1|1,mid+1,r,L,R);
X[i]=X[i<<1]&X[i<<1|1];
return ;
}
int main()
{
n=gi();m=gi();
for(int i=1;i<=m;i++)
a[i]=gi(),b[i]=gi();
for(int i=n;i>=1;i--) //从后往前贴,越后面的能看见的几率越大
{
flag=0;
update(1,1,n,a[i],b[i]);
if(flag) ans++;
}
cout<<ans;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...