(线段树)A Corrupt Mayor's Performance Art
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5023
题意: 区间更新, 区间询问;
题解: 区间更新, 区间询问, 一共30种颜色, 可用int 来存。
地区选拔赛的一道题,当时还没怎么学线段树(只会单点更新), 这道题只能看着别人A, 自己干着急。 今天刚看了NOS神牛的第一道区间更新就迫不及待的尝试了下。
不得不说, 题目水, 人更水TT。
最后在感慨一下, NOS神牛的代码真tm好看。
/***Good Luck***/
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#include <stack>
#include <map>
#include <queue>
#include <vector>
#include <set>
#include <functional>
#include <cmath>
#include <numeric> #define Zero(a) memset(a, 0, sizeof(a))
#define Neg(a) memset(a, -1, sizeof(a))
#define All(a) a.begin(), a.end()
#define PB push_back
#define inf 0x3f3f3f3f
#define inf2 0x7fffffffffffffff
#define ll long long
using namespace std;
//#pragma comment(linker, "/STACK:102400000,102400000")
void get_val(int &a) {
int value = , s = ;
char c;
while ((c = getchar()) == ' ' || c == '\n');
if (c == '-') s = -s; else value = c - ;
while ((c = getchar()) >= '' && c <= '')
value = value * + c - ;
a = s * value;
}
#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1| 1
const int maxn = 1e6 + ;
int A[maxn << ];
int n, m;
int col[maxn << ];
void pu(int rt) {
A[rt] = A[rt << ] | A[rt << | ];
} void pd(int rt) {
if (col[rt]) {
col[rt << ] = col[rt << | ] = col[rt];
A[rt << ] = col[rt];
A[rt << | ] = col[rt];
col[rt] = ;
}
} void update(int L, int R, int v, int l, int r, int rt) {
if (L <= l && r <= R) {
A[rt] = << (v - );
col[rt] = << (v - );
return;
}
pd(rt);
int m = (l + r) >> ;
if (L <= m) update(L, R, v, lson);
if (R > m) update(L, R, v, rson);
pu(rt);
} int query(int L, int R, int l, int r, int rt) {
if (L <= l && r <= R) {
return A[rt];
}
pd(rt);
int m = (l + r) >> ;
int ret = ;
if (L <= m) ret |= query(L, R, lson);
if (R > m) ret |= query(L, R, rson);
return ret;
}
int main() {
//freopen("data.out", "w", stdout);
//freopen("data.in", "r", stdin);
//cin.sync_with_stdio(false);
while (scanf("%d%d", &n, &m), n|m) {
int t = n << ;
char q[];
int a, b, v, ans;
for (int i = ; i <= t; ++i) {
A[i] = ;
col[i] = ;
}
vector<int> vr;
for (int i = ; i <= m; ++i) {
scanf("%s", q);
if (q[] == 'P') {
scanf("%d%d%d", &a, &b, &v);
update(a, b,v, , n, );
} else {
scanf("%d%d", &a, &b);
ans = query(a, b, , n, );
for (int w = ; w <= ; ++w) {
if (ans & ) vr.push_back(w );
ans >>= ;
}
for (int w = ; w < vr.size(); ++w) printf("%d ", vr[w - ]);
printf("%d\n", *vr.rbegin());
vr.clear();
}
}
}
return ;
}
(线段树)A Corrupt Mayor's Performance Art的更多相关文章
- A Corrupt Mayor's Performance Art(线段树区间更新+位运算,颜色段种类)
A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 100000/100 ...
- 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 ...
- 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 ...
- HDU5023:A Corrupt Mayor's Performance Art(线段树区域更新+二进制)
http://acm.hdu.edu.cn/showproblem.php?pid=5023 Problem Description Corrupt governors always find way ...
- 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(线段树区间更新)
题目链接: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 ...
- A Corrupt Mayor's Performance Art
Corrupt governors always find ways to get dirty money. Paint something, then sell the worthless pain ...
随机推荐
- LWIP移植文件介绍
在介绍文件之前首先介绍一下DMA描述符 stm32以太网模块接收/发送FIFO和内存之间的以太网传输是通过以太网DMA使用DMA描述符完成的,一共有两个描述符列表:一个用于接收,一个用于发送, 两个列 ...
- 简单理解TCP通信的三次握手
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接. 位码(可以理解为请求状态): 有6种标示:SYN(synchronous建立联机) ACK(acknowledg ...
- .Net Core 3.0 IdentityServer4 快速入门02
.Net Core 3.0 IdentityServer4 快速入门 —— resource owner password credentials(密码模式) 一.前言 OAuth2.0默认有四种授权 ...
- HTML5+WebGL 的加油站 3D 可视化监控
前言 随着数字化,工业互联网,物联网的发展,我国加油站正向有人值守,无人操作,远程控制的方向发展,传统的人工巡查方式逐渐转变为以自动化控制为主的在线监控方式,即采用数据采集与监控系统 SCADA.SC ...
- Redis真集群安装
Redis真集群安装 命令文档:http://redisdoc.com/index.html 下载:https://code.google.com/archive/p/redis/downloads ...
- 学习python3高阶函数笔记和demo
python的高阶函数的定义是:一个函数接收另一个函数作为参数,这种函数就称之为高阶函数 举一个最简单的例子: def text(a,b,c): return c(a)+c(b) print( tex ...
- Creator 2.2.0 终于等来了这款Shader组件神器!一招搞定Effect特效
先看下视频演示: ShaderHelper2支持Creator 2.2.0 视频录完后才想起,还没在微信小游戏中测试,赶紧试试,下面是在微信开发者工具中的截图. 径向模糊 探照灯 提供了一个Shade ...
- (一) kinect概述
Kinect可以进行身体节点定位,姿势定位,人脸识别等功能,在此先做简单介绍,后续主要介绍插件的应用,毕竟自己开发识别过程太消耗时间. (注1:Kinect官方虽然提供了Unity的APi,但是方便起 ...
- 时针.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Pyhton网络爬虫之CrawlSpider
一.什么是CrawlSpider? 在学习CrawlSpider之前如果我们想爬取某网站前100页的内容的话,我们可以使用的方法是通过Request模块手动发起请求,递归调用parse方法,写起来非常 ...