hdu 5023 A Corrupt Mayor's Performance Art
2014-09-21 21:29
246 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5023
题意:
P是将区间 a 到 b 染成颜色 c
Q是询问区间 a 到 b 内的颜色
然后按照顺序输出。
思路:
因为颜色只有30种利用二进制来表示。
题意:
P是将区间 a 到 b 染成颜色 c
Q是询问区间 a 到 b 内的颜色
然后按照顺序输出。
思路:
因为颜色只有30种利用二进制来表示。
#include <stdio.h> #include <iostream> #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 using namespace std; const int maxn = 1100005; int tree[maxn<<2]; int flag[maxn<<2]; void PushUp(int rt){ tree[rt] = tree[rt<<1]|tree[rt<<1|1]; } void PushDown(int rt){ if(flag[rt]){ flag[rt<<1] = flag[rt<<1|1] = 1; tree[rt<<1] = tree[rt]; tree[rt<<1|1] = tree[rt]; flag[rt] = 0; } } void build(int l,int r,int rt){ flag[rt] = 0; tree[rt] = 2; if(l == r) return; int m = (l+r)>>1; build(lson); build(rson); PushUp(rt); } void update(int L,int R,int c,int l,int r,int rt){ if(L<=l && r<=R){ tree[rt] = c; flag[rt] = 1; return; } PushDown(rt); int m = (l+r)>>1; if(L <= m) update(L, R, c, lson); if(R > m) update(L, R, c, rson); PushUp(rt); } int res; int query(int L,int R,int l,int r,int rt){ if(flag[rt] || (L<=l && r<=R)) return tree[rt]; PushDown(rt); int m = (l+r)>>1; if(L<=m) res |= query(L, R, lson); if(R > m) res |= query(L, R, rson); return res; } int main(){ int n,m; while(~scanf("%d%d",&n,&m)&&(n||m)){ char qq[2]; int a,b,c; build(1, n, 1); for(int i = 0;i < m;i++){ scanf("%1s",qq); if(qq[0] == 'P'){ scanf("%d%d%d",&a,&b,&c); update(a, b, 1<<(c-1), 1, n, 1); } else{ res = 0; scanf("%d%d",&a,&b); //printf("%d\n",query(a, b, 1, n, 1)); int temp = query(a, b, 1, n, 1); int cnt = 0; int ans[32]; for(int i = 0;i < 31;i++){ if(temp&(1<<i)) ans[cnt++] = i + 1; } printf("%d",ans[0]); for(int i = 1;i < cnt;i++) printf(" %d",ans[i]); printf("\n"); } } } return 0; }
相关文章推荐
- hdu 5023 A Corrupt Mayor's Performance Art(线段树区间合并)
- HDU - 5023 A Corrupt Mayor's Performance Art(区间修改)
- 【HDU 5023】A Corrupt Mayor's Performance Art 【线段树+状态压缩】
- HDU 5023 A Corrupt Mayor's Performance Art(线段树+优美的位运算)
- A Corrupt Mayor's Performance Art HDU - 5023
- HDU 5023 A Corrupt Mayor's Performance Art (线段树)
- hdu 5023 A Corrupt Mayor's Performance Art(线段树+位运算)
- HDU 5023 A Corrupt Mayor's Performance Art(线段树区间更新)
- hdu 5023-A Corrupt Mayor's Performance Art
- HDU 5023 A Corrupt Mayor's Performance Art (线段树 位运算)
- HDU 5023 A Corrupt Mayor's Performance Art 线段树 区间染色
- hdu-5023 A Corrupt Mayor's Performance Art (线段树区间修改)
- HDU 5023 A Corrupt Mayor's Performance Art (线段树)
- HDU 5023 A Corrupt Mayor's Performance Art (线段树区间更新,入门详解)
- Hdu 5023 A Corrupt Mayor's Performance Art(线段树+状压)
- HDU 5023 A Corrupt Mayor's Performance Art(广州网络赛B题)
- hdu 5023 A Corrupt Mayor's Performance Art 2014 ACM/ICPC Asia Regional Guangzhou Online
- HDU_5023 A Corrupt Mayor's Performance Art
- HDU5023--A Corrupt Mayor's Performance Art(成段替换)
- HDU 5023 A Corrupt Mayor's Performance Art(线段树)