线段树区间更新poj2777
来源:互联网 发布:vm mac 硬件加速 编辑:程序博客网 时间:2024/05/17 23:43
这个题跟poj2528贴海报是一样的。
#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<queue>#include<stack>#include<map>#include<set>#include<algorithm>using namespace std;const int maxn=100010;int L,T,O;set<int> s;struct IntervalTree{ int setv[maxn<<3]; void build(int o,int l,int r) { setv[o]=1; if(l==r)return ; int mid=(l+r)>>1; build(o<<1,l,mid); build(o<<1|1,mid+1,r); } void pushdown(int o) { if(setv[o]>0) { setv[o<<1]=setv[o<<1|1]=setv[o]; setv[o]=-1; } } void update(int o,int l,int r,int q1,int q2,int x) { if(q1<=l&&r<=q2) { setv[o]=x; return ; } pushdown(o); int mid=(l+r)>>1; if(q1<=mid)update(o<<1,l,mid,q1,q2,x); if(q2>mid)update(o<<1|1,mid+1,r,q1,q2,x); } void query(int o,int l,int r,int q1,int q2) { if(setv[o]>0) { s.insert(setv[o]); return; } if(l==r)return; int mid=(l+r)>>1; if(q1<=mid)query(o<<1,l,mid,q1,q2); if(q2>mid)query(o<<1|1,mid+1,r,q1,q2); }}tree;int main(){ freopen("in.txt","r",stdin); char op[5]; int a,b,c; while(scanf("%d%d%d",&L,&T,&O)!=EOF) { tree.build(1,1,L); while(O--) { scanf("%s",op); if(op[0]=='C') { scanf("%d%d%d",&a,&b,&c); tree.update(1,1,L,a,b,c); } else { s.clear(); scanf("%d%d",&a,&b); tree.query(1,1,L,a,b); int ans=s.size(); printf("%d\n",ans); } } } return 0;}
0 0
- 线段树区间更新poj2777
- POJ2777(线段树区间更新+LAZY)
- POJ2777 Count Color 线段树区间更新
- POJ2777 Count Color 线段树区间更新
- 【POJ2777】Count Color-线段树区间更新
- POJ2777 - Count Color (线段树 区间更新)
- poj2777 Count Color 线段树区间更新+位操作
- poj2777(延迟更新+线段树)
- 线段树点更新+反素数+poj2777
- 线段树区间更新
- 线段树区间更新
- 线段树 区间更新
- 线段树区间更新
- 线段树-区间更新
- 线段树区间更新
- 线段树区间更新
- 线段树区间更新
- 区间更新线段树
- VirtualBox 下安装CentOS6.5增强功能遇到的问题与解决方案
- ios8 swift开发:let var 区别讨论
- Knozen:新型职场社交评论匿名应用,已获多家风投投资
- java中浮点数的计算
- ssh配置
- 线段树区间更新poj2777
- php_screw安装,使用,编译,问题说明
- Mac OS X 获取Root权限代码
- The program can't start because libgcc_s_dw2-1.dll is missing
- centos 5.6下Ganglia监控安装及部署
- 产品经理必知:竞品分析,你懂了吗?
- servlet调用spring中的bean(注解方式)
- OCP 1Z0 053 35
- 数字签名和数字加密的工作流程与比较