当前位置:网站首页>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
边栏推荐
- Sorting out the problems encountered in MySQL built by pycharm connecting virtual machines
- Oracle checkpoint queue - Analysis of the principle of instance crash recovery
- PIP install beatifulsoup4 installation failed
- 如何组织一场实战攻防演练
- Parker驱动器维修COMPAX控制器维修CPX0200H
- R language [data management]
- Alibaba cloud award winning experience: build a highly available system with polardb-x
- Li Kou ----- the maximum profit of operating Ferris wheel
- Golang (1) | from environmental preparation to quick start
- selenium 获取dom内验证码图片
猜你喜欢

MMAP

Opérations de lecture et d'écriture pour easyexcel

Scenario interview: ten questions and ten answers about distributed locks

华为联机对战如何提升玩家匹配成功几率

Zhang Lijun: la pénétration de l’incertitude dépend de quatre « invariants»

"Grain mall" -- Summary and induction

DBeaver同时执行多条insert into报错处理

2.2 basic grammar of R language

Analysis and test of ModbusRTU communication protocol

Access Zadig self-test environment outside the cluster based on ingress controller (best practice)
随机推荐
How to prepare for the algorithm interview and answer the algorithm interview questions
让开发效率提升的跨端方案
Xlrd common operations
uni-app 蓝牙通信
Kingbasees v8r3 data security case - audit record clearing case
JMeter installation under win7
int GetMonth( ) const throw( );后面的throw( )什么意思?
Scenario interview: ten questions and ten answers about distributed locks
力扣------经营摩天轮的最大利润
基于 Ingress Controller 在集群外访问 Zadig 自测环境(最佳实践)
R language learning notes
MySQL InnoDB Architecture Principle
张丽俊:穿透不确定性要靠四个“不变”
Oracle HugePages没有被使用导致服务器很卡的解决方法
What should I do to prepare for the interview algorithm position during school recruitment?
Golang(1)|从环境准备到快速上手
int GetMonth( ) const throw( ); What does throw () mean?
KingbaseES V8R3集群维护案例之---在线添加备库管理节点
sql常用语法记录
Net small and medium-sized enterprise project development framework series (one)