【CDOJ 1259】 昊昊爱运动Ⅱ 【bitset状压+线段树】
来源:互联网 发布:北外网络教育多少钱 编辑:程序博客网 时间:2024/06/05 06:52
http://acm.uestc.edu.cn/#/problem/show/1259
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<bitset>using namespace std;#define maxn 100010int n,m,q;struct Tree{ bitset<110>sum; int lazy; }e[maxn<<4];int tmp;void pushup(int u){e[u].sum = e[u<<1].sum | e[u<<1|1].sum;}void build(int u,int l,int r){ if(l==r){ e[u].sum.reset(); e[u].lazy = 0; scanf("%d",&tmp); e[u].sum[tmp]=1; return; } int mid = (l+r)>>1; build(u<<1,l,mid); build(u<<1|1,mid+1,r); pushup(u);}void pushdown(int u){ if(e[u].lazy==0)return; e[u<<1].sum.reset(); e[u<<1|1].sum.reset(); e[u<<1].sum[e[u].lazy]=e[u<<1|1].sum[e[u].lazy]=1; e[u<<1].lazy=e[u<<1|1].lazy=e[u].lazy; e[u].lazy = 0;}void update(int u,int l,int r,int x,int y,int v){ if(l>=x&&r<=y) { e[u].sum.reset(); e[u].lazy = v; e[u].sum[v] = 1; return ; } int mid = (l+r)>>1; pushdown(u); if(x<=mid)update(u<<1,l,mid,x,y,v); if(y>mid)update(u<<1|1,mid+1,r,x,y,v); pushup(u);}bitset<110> query(int u,int l,int r,int x,int y){ if(x<=l&&r<=y) return e[u].sum; int mid = (l+r)>>1; bitset<110> res; pushdown(u); if(x<=mid)res|=query(u<<1,l,mid,x,y); if(y>mid)res|=query(u<<1|1,mid+1,r,x,y); pushup(u); return res;}int main(){ scanf("%d%d",&n,&m); build(1,1,n); scanf("%d",&q); int x,y,v; while(q--) { char op[2]; scanf("%s",op); if(op[0]=='M'){ scanf("%d%d%d",&x,&y,&v); update(1,1,n,x,y,v); }else{ scanf("%d%d",&x,&y); printf("%d\n",query(1,1,n,x,y).count()); } } return 0;}
1 0
- 【CDOJ 1259】 昊昊爱运动Ⅱ 【bitset状压+线段树】
- 【cdoj 1259】昊昊爱运动 bitset
- 2016 UESTC Training for Data Structures Q - 昊昊爱运动 II CDOJ 1259 线段树+bitset
- cdoj 1259 线段树+bitset
- CDOJ1259 昊昊爱运动 II (线段树+bitset)
- 2016 UESTC Training for Data Structures Q - 昊昊爱运动 II 线段树+延迟操作+bitset
- cdoj1259 线段树+bitset
- cdoj 母仪天下(线段树)
- 【CDOJ 383】Japan 【线段树+逆序对】
- CDOJ 841 权值线段树
- Summer Training day6 codeforces633G 线段树、bitset
- codeforces dfs序+线段树+bitset
- cdoj 长使英雄泪满襟(线段树)
- CDOJ--卿学姐与基本法(线段树+离散化+区间查询)
- 【cdoj 1325】卿学姐与基本法 离散化+线段树
- CDOJ 843 冰雪奇缘 (线段树+离散)
- 【cdoj 843】冰雪奇缘 线段树保留区间
- CDOJ 1292 卿学姐种花(暴力,分块,线段树)
- 排序算法 之 冒泡排序 BubbleSort
- GZIP压缩原理分析(23)——第五章 Deflate算法详解(五14) 动态哈夫曼编码分析(03) LZ77过程(02)
- HDU 2177 取(2堆)石子游戏 (威佐夫博奕)
- 9.view 作图过程,讲讲draw/onDraw和drawChild
- echarts设置y轴值间隔
- 【CDOJ 1259】 昊昊爱运动Ⅱ 【bitset状压+线段树】
- 使用Bundle在Activity中来传递数据
- HDU 1408 盐水的故事
- 遍历二叉树
- hdu1432 Lining Up --判断点在一条线上的个数
- length,length(),size()区别
- Android中的Toolbar详解
- RBTree红黑树
- C基础(21——25)