HDOJ 5023 A Corrupt Mayor's Performance Art
2014-09-21 01:07
239 查看
//线段树(区间更新) //用 c++ 交就是RE,换成 g++ 过了 #pragma comment(linker, "/STACK:102400000,102400000") #include <cstdio> #include <cstring> #include <vector> #include <algorithm> using namespace std; const int maxn = 3000010;//这里要稍微开大点,不然容易RE vector<int>ve; int y1, y2, v; int setv[maxn<<2]; void maintain(int o){ int lc = o * 2, rc = o * 2 + 1; } void build_tree(int o, int L, int R){ int lc = o * 2, rc = o * 2 + 1; setv[o] = 2; if( L == R )return ; int M = ( R + L ) / 2; build_tree(lc, L, M); build_tree(rc, M+1,R); } void pushdown(int o, int L ,int R){ int lc = o * 2, rc = o * 2 + 1; if(setv[o]>0&&setv[o]<=30){ int M = ( R + L ) / 2; setv[lc] = setv[rc] = setv[o]; setv[o] = -1; } return ; } void update(int o, int l, int r){ int lc = o*2, rc = o*2+1; if(y1<=l&&y2>=r){ setv[o] = v;return ; } else { pushdown(o,l,r); int m = (l+r)/2; if(y1<=m)update(lc, l, m); if(y2>m)update(rc, m+1, r); } } void query(int o, int l, int r) { if(setv[o]>=0&&setv[o]<=30){ ve.push_back(setv[o]); } else { int m = (l+r)/2; if(y1<=m)query(o*2,l,m); if(y2>m)query(o*2+1,m+1,r); } } int main(){ //freopen("in.txt","r",stdin); int n,m; char ch[3]; while(~scanf("%d%d",&n,&m),n||m){ ve.clear(); memset(setv,0,sizeof(setv)); build_tree(1,1,n); for(int i=0;i<m;++i){ scanf("%s%d%d",ch,&y1,&y2); if(ch[0]=='P'){ scanf("%d",&v); update(1,1,n); } else if(ch[0]=='Q'){ query(1,1,n); sort(ve.begin(),ve.end()); ve.erase(unique(ve.begin(),ve.end()),ve.end()); int len = ve.size(); ve[len] = -1; for(int j = 0; j < len; ++j){ j == len-1 ? printf("%d\n",ve[j]) : printf("%d ",ve[j]); } ve.clear(); } } } return 0; }
相关文章推荐
- hdoj 5023 A Corrupt Mayor's Performance Art 【线段树区间修改 + 状压】
- HDOJ-5023-A Corrupt Mayor's Performance Art 解题报告
- HDOJ 5023 A Corrupt Mayor's Performance Art
- hdoj 5023 线段树+位压缩
- 2014亚洲区域赛网络赛广州赛区A Corrupt Mayor's Performance Art(hdoj5023)
- HDOJ 3342 Legal or Not (拓扑排序)
- NYOJ 998&& HDOJ2588 GCD (欧拉函数)
- 【hdoj 1272】小希的迷宫
- HDOJ/HDU 1088 Write a simple HTML Browser(HTML字符串)
- HDOJ 2562 奇偶位互换(水)
- HDOJ-1028Ignatius and the Princess III---(整数划分的母函数做法)
- hdoj1018_Big Number(大数阶乘位数)
- hdoj 1556Color the ball(数状数组)
- HDOJ 4825 Xor Sum
- HDOJ 1021 水题
- HDOJ 2045 不容易系列之(3)—— LELE的RPG难题
- HDOJ 1008
- hdoj 2871 Memory Control 【线段树lazy + 区间合并 + 二维vector的查询、插入、删除】
- HDOJ1232 并查集
- hdoj 1015 safecracker(暴力枚举)