2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art

简介: 1 #include 2 #include 3 #include 4 #include 5 #define N 1000005 6 using namespace std; 7 8 int c[35]; 9 int tree[N*4];//正值表示该节点所管理...
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #define N 1000005
 6 using namespace std;
 7 
 8 int c[35];
 9 int tree[N*4];//正值表示该节点所管理的区间的颜色是纯色,-1表示的是非纯色
10 int n, m; 
11 
12 void buildT(int ld, int rd, int p){
13     if(ld <= rd){
14         tree[p] = 2;//初始每一个节点的颜色全部都是2
15         if(ld == rd) return;
16         int mid=(ld + rd)>>1;
17         buildT(ld, mid, p<<1);
18         buildT(mid+1, rd, p<<1|1);
19     }
20 }
21 
22 void updateT(int ld, int rd, int a, int b, int col, int p){
23     
24     if(ld > rd) return ;
25     
26     if(tree[p] == col) return ;
27     
28     if(ld == a && rd == b){
29         tree[p] = col;
30         return ;
31     }
32     int mid = (ld + rd)>>1;
33     
34     if(tree[p] != -1){// p所管的区间之前是纯色,现在不是纯色了,向下更新其孩子节点的颜色为它的颜色
35         tree[p<<1] = tree[p<<1 | 1] = tree[p];
36         tree[p] = -1;
37     }
38     
39     if(a > mid)
40         updateT(mid+1, rd, a, b, col, p<<1 | 1);
41     else if(b <= mid)
42         updateT(ld, mid, a, b, col, p<<1);
43     else{
44         updateT(ld, mid, a, mid, col, p<<1);
45         updateT(mid+1, rd, mid+1, b, col, p<<1 | 1);
46     }
47 }
48 
49 int cnt;
50 
51 void querryT(int ld, int rd, int a, int b, int p){
52     if(ld>rd) return ; 
53     
54     if(tree[p] != -1){//一直找到纯色的区间!
55         c[tree[p]]=1;
56         return ;
57     }
58     
59     int mid = (ld+rd)>>1;
60     if(a > mid)
61         querryT(mid+1, rd, a, b, p<<1 | 1);
62     else if(b <= mid)
63         querryT(ld, mid, a, b, p<<1) ;
64     else{
65         querryT(ld, mid, a, mid, p<<1);
66         querryT(mid+1, rd, mid+1, b, p<<1 | 1);
67     }
68 }
69 
70 int main(){
71     while(scanf("%d%d", &n, &m) && (n || m)){
72         char ch[2];
73         int a, b, k;
74         buildT(1, n, 1);
75         while(m--){
76             scanf("%s", ch);
77             if(ch[0] == 'P'){
78                 scanf("%d%d%d", &a, &b, &k);
79                 updateT(1, n, a, b, k, 1);
80             }
81             else{
82                 scanf("%d%d", &a, &b);
83                 memset(c, 0, sizeof(c));
84                 querryT(1, n, a, b, 1);
85                 int i;
86                 for(i=1; i<=30; ++i)
87                     if(c[i]){
88                          printf("%d", i);
89                          break;
90                     }
91                 for(++i; i<=30; ++i)
92                     if(c[i]) printf(" %d", i);
93                 printf("\n");
94             }
95         }
96     }
97     return 0;
98 } 

 

目录
相关文章
|
安全 关系型数据库 MySQL
MySQL数据库高效秘籍:10个小技巧,让你轻松应对各种场景!
【8月更文挑战第25天】本文介绍了十个提升MySQL数据库效率与安全性的实用技巧。涵盖查询性能分析、索引优化、慢查询日志利用、图形化工具如MySQL Workbench的应用、性能分析工具、主从复制实现、备份与恢复策略、数据库迁移方法及安全性保障等多个方面。通过具体的示例代码展示每个技巧的实际操作方式,帮助读者深入理解并有效运用MySQL数据库。
560 0
|
11月前
|
存储 编解码 前端开发
阿里云服务器2核4G、4核8G、8核16G选择经济型、通用算力型和计算型选择参考
如果我们想购买的云服务器配置是2核4G、4核8G、8核16G配置,目前在阿里云的活动中,可选的实例规格除了轻量应用服务器之外,有经济型e、通用算力型u1、计算型c7、计算型c8y等几个实例规格可选,由于不同实例规格的性能和价格及适用场景不同,因此,有的新手用户可能不知道如何选择,本文将讨论在2核4G、4核8G、8核16G配置下,如何选择经济型、通用算力型和计算型实例,以供参考。
|
敏捷开发 持续交付 开发工具
拥抱变革:我的技术感悟之旅
【4月更文挑战第30天】 在技术的浪潮中,我学会了不仅是代码的编写与系统的构建,更是在不断的迭代与创新中寻找成长的动力。从早期的困惑到后来的豁然开朗,我深刻体会到技术不是冰冷的命令和逻辑,而是一种解决问题、连接世界的方式。本文将分享我的个人成长经历,以及在技术领域不断学习与适应的过程中形成的一些看法和感悟。
|
XML 存储 前端开发
Spring Boot + vue-element 开发个人博客项目实战教程(二十三、文章管理页面开发(2))
Spring Boot + vue-element 开发个人博客项目实战教程(二十三、文章管理页面开发(2))
379 0
|
缓存
计算机组成原理实验一 运算器实验
计算机组成原理实验一 运算器实验
460 0
|
存储 算法 Java
最新Java基础系列课程--Day04-数组
最新Java基础系列课程--Day04-数组
109 1
|
关系型数据库 MySQL 数据管理
软件测试|MySQL主键自增详解:实现高效标识与数据管理
软件测试|MySQL主键自增详解:实现高效标识与数据管理
|
前端开发
【ES6新特性】— Generator
【ES6新特性】— Generator
189 0
|
JavaScript 前端开发 Java
一文快速上手Vue(上)
一文快速上手Vue(上)
一文快速上手Vue(上)