2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N 1000005
using namespace std; int c[];
int tree[N*];//正值表示该节点所管理的区间的颜色是纯色,-1表示的是非纯色
int n, m; void buildT(int ld, int rd, int p){
if(ld <= rd){
tree[p] = ;//初始每一个节点的颜色全部都是2
if(ld == rd) return;
int mid=(ld + rd)>>;
buildT(ld, mid, p<<);
buildT(mid+, rd, p<<|);
}
} void updateT(int ld, int rd, int a, int b, int col, int p){ if(ld > rd) return ; if(tree[p] == col) return ; if(ld == a && rd == b){
tree[p] = col;
return ;
}
int mid = (ld + rd)>>; if(tree[p] != -){// p所管的区间之前是纯色,现在不是纯色了,向下更新其孩子节点的颜色为它的颜色
tree[p<<] = tree[p<< | ] = tree[p];
tree[p] = -;
} if(a > mid)
updateT(mid+, rd, a, b, col, p<< | );
else if(b <= mid)
updateT(ld, mid, a, b, col, p<<);
else{
updateT(ld, mid, a, mid, col, p<<);
updateT(mid+, rd, mid+, b, col, p<< | );
}
} int cnt; void querryT(int ld, int rd, int a, int b, int p){
if(ld>rd) return ; if(tree[p] != -){//一直找到纯色的区间!
c[tree[p]]=;
return ;
} int mid = (ld+rd)>>;
if(a > mid)
querryT(mid+, rd, a, b, p<< | );
else if(b <= mid)
querryT(ld, mid, a, b, p<<) ;
else{
querryT(ld, mid, a, mid, p<<);
querryT(mid+, rd, mid+, b, p<< | );
}
} int main(){
while(scanf("%d%d", &n, &m) && (n || m)){
char ch[];
int a, b, k;
buildT(, n, );
while(m--){
scanf("%s", ch);
if(ch[] == 'P'){
scanf("%d%d%d", &a, &b, &k);
updateT(, n, a, b, k, );
}
else{
scanf("%d%d", &a, &b);
memset(c, , sizeof(c));
querryT(, n, a, b, );
int i;
for(i=; i<=; ++i)
if(c[i]){
printf("%d", i);
break;
}
for(++i; i<=; ++i)
if(c[i]) printf(" %d", i);
printf("\n");
}
}
}
return ;
}
2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art的更多相关文章
- hdu 5023 A Corrupt Mayor's Performance Art 线段树
A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 100000/100 ...
- 2014 网选 广州赛区 hdu 5025 Saving Tang Monk(bfs+四维数组记录状态)
/* 这是我做过的一道新类型的搜索题!从来没想过用四维数组记录状态! 以前做过的都是用二维的!自己的四维还是太狭隘了..... 题意:悟空救师傅 ! 在救师父之前要先把所有的钥匙找到! 每种钥匙有 k ...
- ACM学习历程—HDU 5023 A Corrupt Mayor's Performance Art(广州赛区网赛)(线段树)
Problem Description Corrupt governors always find ways to get dirty money. Paint something, then sel ...
- HDU 5023 A Corrupt Mayor's Performance Art 线段树区间更新+状态压缩
Link: http://acm.hdu.edu.cn/showproblem.php?pid=5023 #include <cstdio> #include <cstring&g ...
- HDU 5023 A Corrupt Mayor's Performance Art(线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5023 解题报告:一面墙长度为n,有N个单元,每个单元编号从1到n,墙的初始的颜色是2,一共有30种颜色 ...
- HDU 5023 A Corrupt Mayor's Performance Art (据说是线段树)
题意:给定一个1-n的墙,然后有两种操作,一种是P l ,r, a 把l-r的墙都染成a这种颜色,另一种是 Q l, r 表示,输出 l-r 区间内的颜色. 析:应该是一个线段树+状态压缩,但是我用s ...
- hdu - 5023 - A Corrupt Mayor's Performance Art(线段树)
题目原文废话太多太多太多,我就不copyandpaste到这里啦..发个链接吧题目 题目意思就是:P l r c 将区间 [l ,r]上的颜色变成c Q l r 就是打印出区间[l,r ...
- 2014 网选 上海赛区 hdu 5047 Sawtooth
题意:求n个'M'型的折线将一个平面分成的最多的面数! 思路:我们都知道n条直线将一个平面分成的最多平面数是 An = An-1 + n+1 也就是f(n) = (n*n + n +2)/2 对于一个 ...
- 2014 网选 5024 Wang Xifeng's Little Plot
题意:从任意一个任意一个可走的点开始找一个最长的路,这条路如果有转弯的话, 那么必须是 90度,或者没有转弯! 思路: 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 ! step ...
随机推荐
- Leetcode 119 Pascal's Triangle II 数论递推
杨辉三角,这次要输出第rowIndex行 用滚动数组t进行递推 t[(i+1)%2][j] = t[i%2][j] + t[i%2][j - 1]; class Solution { public: ...
- win10 体验
最近听说win10出了正式版,微软貌似在win10上投入了很大的期望,不知道到底怎么样,实践出真知,小编今天就亲自体验一下! 其实很多人对win8不满意,主要是因为win8 的兼容性不尽人意,小编的电 ...
- Goodchild教授关于GIS的四大预测的不同看法
Goodchild教授的关于GIS的4个未来发展的预测不断有人在微信朋友圈里转发,虽然现在做的工作GIS只是一个基本的工具之一了,但对这4个预测还是有不少不同看法和一点自己的意见. Goodchild ...
- java.lang.ClassNotFoundException: org.junit.Assume$AssumptionViolatedException
java.lang.ClassNotFoundException: org.junit.Assume$AssumptionViolatedException 在spring框架中进行单元测试,出现标题 ...
- android如何播放和录制音频
视频录制功能正在走来,在Androidsdk中有与之相关的类:android.media.MediaRecorder.当然,因为模拟器上没有提供必要的硬件设施,所以在学习过程中并不能实现.Media能 ...
- 使用 dbms_xplan.display 按照 plan_hash_value 查执行计划的方法
dbms_xplan.display_* 能按照 plan_hash_value 只有 display_awr 方法,如果这个SQL PLAN 刚刚生成,没有写入到AWR怎么办呢? 可以将 V$SQL ...
- [2013 eoe移动开发者大会]靳岩:从码农到极客的升级之路
(国内知名Android开发论坛 eoe开发者社区推荐:http://www.eoeandroid.com/) 前天,2013 eoe 移动开发者大会在国家会议中心召开,eoe 开发者社区创始人靳岩在 ...
- js去掉html标签和去掉字符串文本的所有的空格
去掉html标签的js <script> function delHtmlTag(str){ return str.replace(/<[^>]+>/g,"& ...
- webdriver实用指南迁移至gitbbok并改名为selenium webdriver从入门到提高
背景 几年前我写了一本关于selenium webdriver的小册子,主要讲了一些selenium在进行测试过程中会遇到的场景以及解决方案,陆陆续续在github上收到了100+的star,在这里我 ...
- 转:windows下多线程通信方法
多线程知识简介 同一进程中可以包含多个线程,由于进程中的多个线程可以共享进程中的资源,所以使同一进程中的多个线程之间通信相对比较简单. 当需要有多个线程来访问一个全局变量时,通常我们会在这个全局变量前 ...