当前位置:网站首页>HDU 4391 paint the wall segment tree (water
HDU 4391 paint the wall segment tree (water
2022-07-05 21:44:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm the king of the whole stack
Serie A Champion :
given n A long line .m operation
Here are the colors of the dots
following m A kind of manipulation :
1 l r col dyeing
2 l r col Ask interval col Chromatic dots
== Pass operation + Optimization of the maximum and minimum number of colors in the interval , It feels very unscientific ...
== I feel like I can get rid of this writing .. Anyway, it's unscientific
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
#define L(x) tree[x].l
#define R(x) tree[x].r
#define Len(x) tree[x].len
#define Lazy(x) tree[x].lazy
#define M(x) tree[x].minn
#define W(x) tree[x].maxx
#define Lson(x) (x<<1)
#define Rson(x) (x<<1|1)
const int N = 100010;
struct node{
int l, r, len, lazy, minn, maxx;
}tree[N<<2];
int col[N];
void push_up(int id){
if(Lazy(Lson(id)) == Lazy(Rson(id)))
Lazy(id) = Lazy(Lson(id));
else Lazy(id) = -1;
M(id) = min(M(Lson(id)), M(Rson(id)));
W(id) = max(W(Lson(id)), W(Rson(id)));
}
void push_down(int id){
if(Lazy(id) != -1){
Lazy(Lson(id)) = Lazy(Rson(id)) = Lazy(id);
M(Lson(id)) = W(Lson(id)) = Lazy(id);
M(Rson(id)) = W(Rson(id)) = Lazy(id);
}
}
void build(int l, int r, int id){
L(id) = l; R(id) = r;
Len(id) = r-l+1;
Lazy(id) = -1;
if(l == r){
Lazy(id) = col[l];
W(id) = M(id) = col[l];
return ;
}
int mid = (l+r)>>1;
build(l, mid, Lson(id));
build(mid+1, r, Rson(id));
push_up(id);
}
void updata(int l, int r,int val, int id){
if(l == L(id) && R(id) == r){
Lazy(id) = val;
W(id) = M(id) = val;
return ;
}
push_down(id);
int mid = (L(id) + R(id)) >>1;
if(mid < l)
updata(l, r, val, Rson(id));
else if(r <= mid)
updata(l, r, val, Lson(id));
else {
updata(l, mid, val, Lson(id));
updata(mid+1, r, val, Rson(id));
}
push_up(id);
}
int query(int l, int r, int col, int id){
if(!(M(id)<=col && col<=W(id))) return 0;
if(Lazy(id)!=-1){
if(Lazy(id) == col)
return r-l+1;
else return 0;
}
push_down(id);
int mid = (L(id) + R(id)) >>1;
if(mid < l)
return query(l, r, col, Rson(id));
else if(r <= mid)
return query(l, r, col, Lson(id));
else
return query(l, mid, col, Lson(id)) + query(mid+1, r, col, Rson(id));
}
int n, que;
int main() {
while (cin>>n>>que) {
for(int i = 1; i <= n; i++)scanf("%d", &col[i]);
build(1, n, 1);
while(que--){
int type, l, r, color;
scanf("%d %d %d %d", &type, &l, &r, &color);
l++; r++;
if(type == 1)
updata(l, r, color, 1);
else
printf("%d\n", query(l, r, color, 1));
}
}
return 0;
}
/*
5 12
1 2 3 4 0
2 1 3 3
1 1 3 1
2 1 3 3
2 0 3 1
2 3 4 1
1 0 4 0
2 0 4 0
2 0 4 2000000000
1 0 0 1
1 4 4 2
2 0 4 1
2 0 4 2
*/
Copyright notice : This article is an original blog article . Blog , Without consent , Shall not be reproduced .
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/117563.html Link to the original text :https://javaforall.cn
边栏推荐
- 校招期间 准备面试算法岗位 该怎么做?
- Zhang Lijun: la pénétration de l’incertitude dépend de quatre « invariants»
- ICMP 介绍
- Pointer parameter passing vs reference parameter passing vs value parameter passing
- Kingbasees v8r3 data security case - audit record clearing case
- Robot framework setting variables
- poj 3237 Tree(树链拆分)
- 2.2 basic grammar of R language
- How to prepare for the algorithm interview and answer the algorithm interview questions
- 2022-07-03-CKA-粉丝反馈最新情况
猜你喜欢
Deployment of Jenkins under win7
Xlrd common operations
冯唐“春风十里不如你”数字藏品,7月8日登录希壤!
ICMP 介绍
华为联机对战如何提升玩家匹配成功几率
Parker driver maintenance COMPAX controller maintenance cpx0200h
深信服X计划-网络协议基础 DNS
1.2 download and installation of the help software rstudio
PIP install beatifulsoup4 installation failed
Alibaba cloud award winning experience: build a highly available system with polardb-x
随机推荐
力扣------经营摩天轮的最大利润
SQL knowledge leak detection
1.2 download and installation of the help software rstudio
GCC9.5离线安装
SecureCRT使用提示
Teach yourself to train pytorch model to Caffe (2)
让开发效率提升的跨端方案
POJ 3237 tree (tree chain splitting)
Comprehensive optimization of event R & D workflow | Erda version 2.2 comes as "7"
123456
Zhang Lijun: la pénétration de l’incertitude dépend de quatre « invariants»
Poj 3237 Tree (Tree Chain Split)
Clickhouse copy paste multi line SQL statement error
Recursive query of multi-level menu data
PIP install beatifulsoup4 installation failed
Advantages of robot framework
What should I do to prepare for the interview algorithm position during school recruitment?
秋招将临 如何准备算法面试、回答算法面试题
资深电感厂家告诉你电感什么情况会有噪音电感噪音是比较常见的一种电感故障情况,如果使用的电感出现了噪音大家也不用着急,只需要准确查找分析出什么何原因,其实还是有具体的方法来解决的。作为一家拥有18年品牌
Learning notes of statistical learning methods -- Chapter 1 Introduction to statistical learning methods