当前位置:网站首页>HDU 4391 Paint The Wall 段树(水
HDU 4391 Paint The Wall 段树(水
2022-07-05 21:39:00 【全栈程序员站长】
大家好,又见面了,我是全栈君
意甲冠军:
特定n多头排列。m操作
以下是各点的颜色
以下m一种操纵:
1 l r col 染色
2 l r col 问间隔col色点
== 通的操作+区间内最大最小颜色数的优化,感觉非常不科学。。。
==感觉能够卡掉这样的写法。。反正就是不科学嘛
#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
*/
版权声明:本文博客原创文章。博客,未经同意,不得转载。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117563.html原文链接:https://javaforall.cn
边栏推荐
- Oracle HugePages没有被使用导致服务器很卡的解决方法
- 股票开户选择哪家证券公司比较好哪家平台更安全
- [case] Application of positioning - Taobao rotation map
- Evolution of zhenai microservice underlying framework from open source component encapsulation to self-development
- 秋招将临 如何准备算法面试、回答算法面试题
- Test of incombustibility of cement adhesives BS 476-4
- Longest swing sequence [greedy practice]
- 張麗俊:穿透不確定性要靠四個“不變”
- Parker驱动器维修COMPAX控制器维修CPX0200H
- 1.2 download and installation of the help software rstudio
猜你喜欢
校招期间 准备面试算法岗位 该怎么做?
Feng Tang's "spring breeze is not as good as you" digital collection, logged into xirang on July 8!
Teach yourself to train pytorch model to Caffe (I)
What should I do to prepare for the interview algorithm position during school recruitment?
R language [data management]
递归查询多级菜单数据
R language learning notes
Alibaba cloud award winning experience: build a highly available system with polardb-x
Evolution of zhenai microservice underlying framework from open source component encapsulation to self-development
2022-07-03-CKA-粉丝反馈最新情况
随机推荐
The transformation based on vertx web sstore redis to realize the distributed session of vertx HTTP application
Arcgis\qgis no plug-in loading (no offset) mapbox HD image map
张丽俊:穿透不确定性要靠四个“不变”
Postgres establish connection and delete records
Kingbasees v8r3 cluster maintenance case -- online addition of standby database management node
KingbaseES V8R3集群维护案例之---在线添加备库管理节点
@Validated basic parameter verification, grouping parameter verification and nested parameter verification
DBeaver同时执行多条insert into报错处理
Problems encountered in office--
PostGIS installation geographic information extension
regular expression
Environment configuration problem record
Recursive query of multi-level menu data
Aitm2-0002 12s or 60s vertical combustion test
MMAP
Some common processing problems of structural equation model Amos software
Objects in the list, sorted by a field
int GetMonth( ) const throw( );后面的throw( )什么意思?
Robot operation mechanism
Interviewer: will concurrent programming practice meet? (detailed explanation of thread control operation)