Hdu 5023 A Corrupt Mayor's Performance Art(线段树+状压)
来源:互联网 发布:c语言最大公约数流程图 编辑:程序博客网 时间:2024/05/29 16:23
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5023
思路:用一30位数每一位表示有某个颜色,使用线段树进行区间修改与查询。最后某位为1,则存在该种颜色。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define root 1,maxn,1#define debuusing namespace std;typedef long long LL;const int maxn=1e6+50;int n,Q;int add[maxn<<2],sum[maxn<<2];void PushUp(int rt){ sum[rt]=sum[rt<<1]|sum[rt<<1|1];}void PushDown(int rt){ if(add[rt]) { add[rt<<1]=add[rt]; add[rt<<1|1]=add[rt]; sum[rt<<1]=add[rt]; sum[rt<<1|1]=add[rt]; add[rt]=0; }}void build(int l,int r,int rt){ add[rt]=0; if(l==r) { sum[rt]=2; 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) { add[rt]=1<<(c-1); sum[rt]=1<<(c-1); return ; } PushDown(rt); int m=(l+r)>>1; if(L<=m) Update(L,R,c,lson); if(m<R) Update(L,R,c,rson); PushUp(rt);}int Query(int L,int R,int l,int r,int rt){ if(L<=l&&r<=R) return sum[rt]; PushDown(rt); int m=(l+r)>>1; int ret=0; if(L<=m) ret|=Query(L,R,lson); if(m<R) ret|=Query(L,R,rson); return ret;}int main(){#ifdef debug freopen("in.in","r",stdin);#endif // debug while(scanf("%d%d",&n,&Q)!=EOF&&(n||Q)) { getchar(); memset(add,0,sizeof(add)); memset(sum,0,sizeof(sum)); build(root); while(Q--) { char ch; scanf("%c",&ch); if(ch=='P') { int l,r,x; scanf("%d%d%d",&l,&r,&x); getchar(); Update(l,r,x,root); } else { int l,r; scanf("%d%d",&l,&r); getchar(); int ans=Query(l,r,root); int flag=1; for(int i=0; i<30; i++) { if((ans>>i)&1) { if(flag) { printf("%d",i+1); flag=0; } else printf(" %d",i+1); } } printf("\n"); } } } return 0;}
0 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(线段树+状压)
- 【线段树】 HDU 5025 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 (线段树区间更新,入门详解)
- HDU 5023 A Corrupt Mayor's Performance Art(线段树)
- HDU 5023 A Corrupt Mayor's Performance Art (线段树 位运算)
- HDU 5023 A Corrupt Mayor's Performance Art(线段树区间更新)
- 负载均衡——Nginx理论
- openCV(1)-Mat初始化
- HashMap源码分析
- LeetCode 101. Symmetric Tree
- 洛谷 P1462 通往奥格瑞玛的道路
- Hdu 5023 A Corrupt Mayor's Performance Art(线段树+状压)
- 让mybatis在控制台里打印sql语句
- C++总结
- Java IO
- oracle数据库报ora-01691错误--表空间容量溢出解决办法
- Xamarin Android 欢迎页
- ORA-00376/ORA-01110 故障处理办法
- EditText(输入框)
- 流媒体视频直播类研究(一):Windows环境下部署Red5-Server流媒体服务器