小A的題 線段樹區間賦值

2021-09-26 02:02:22 字數 2309 閱讀 2682

小a的題 描述

由於小 a 實在是太菜了,因此他現在需要你的幫助: 現在小 a 手上有乙個凌亂的 01 串,他想通過若干次對於這個 01 串的區域性排序將它變成乙個有趣的 01 序列。 現在有兩種操作:

輸入格式

l r 00 表示把區間 [l,r][給公升序排序

l r 11 表示把區間 [l,r]給降序排序

然後小 a 這個菜雞想知道在 m次操作之後序列長啥樣。

輸出格式

第一行乙個 01 串 s。 第二行乙個整數 m。 接下來 m 行每行三個整數 l,r,x,保證l≤r

andx

=0

l \le r \ \ \ and \ \ x=0

l≤rand

x=0 中的乙個。

m 次操作之後的 01 串

資料範圍

∣ s∣

≤1000000,m

≤500000∣s

∣≤

1000000,m

≤500000

|s| \le 1000000,m \le 500000∣s∣≤1000000,m≤500000

∣s∣≤10

0000

0,m≤

5000

00∣s

∣≤10

0000

0,m≤

5000

00輸出時每行末尾的多餘空格,不影響答案正確性

樣例輸入

11001

12 4 0

樣例輸出
10011
因為區間只有01,降序排序之後左邊全是1,右邊全是0,所以,維護區間1的個數,0的個數=區間長度-1的個數。

#include

using

namespace std;

const

int inf=

0x3f3f3f3f

,mod=

1e9+

7,maxn=

1e6+4;

#define lson (i<<1)

#define rson (i<<1|1)

#define mid ((l+r)>>1)

int one[maxn<<2]

,n,t;

//one:1的個數

bool lazy[maxn<<2]

;char ans[maxn]

;void

down

(int i,

int l,

int r)

intsum

(int x,

int y,

int i=1,

int l=1,

int r=n)

voidup(

int i,

int l,

int r)

void

change

(int x,

int y,

int val,

int i=1,

int l=1,

int r=n)

if(lazy[i]

)down

(i,l,r);if

(x<=mid)

change

(x,y,val,lson,l,mid);if

(y>mid)

change

(x,y,val,rson,mid+

1,r);up

(i,l,r);}

void

build

(int i=1,

int l=1,

int r=n)

build

(lson,l,mid)

;build

(rson,mid+

1,r);up

(i,l,r);}

void

print

(int i=1,

int l=1,

int r=n)

if(lazy[i]

)down

(i,l,r)

;print

(lson,l,mid)

;print

(rson,mid+

1,r);}

intmain()

build()

;scanf

("%d"

,&t)

;int x,y,op,yi,m;

while

(t--

)else

if(op==0)

}print()

;return0;

}

線段樹多種操作模板(區間加,區間乘,區間賦值)

做這種題目呢,我們只需要分清楚每種操作的優先順序就行了。在這裡,我們規定優先順序 區間賦值 區間乘 區間加。也沒啥好說而呀,我要咋辦 記得 que ry query quer y 和 upd at eupdate update 時要 標記下飯 放就行了。放 吧。include define ll l...

線段樹(區間樹)

目錄 為什麼要使用線段樹 什麼是線段樹 線段樹融合介面 線段樹實現 線段樹例題 融合介面 author administrator param public inte ce merger package com.suanfa.segmenttree 線段樹 區間樹 author administra...

線段樹 區間樹

每乙個節點儲存的是乙個區間中相應統計值 在treeindex的位置建立表示區間 l.r 的線段樹 private void buildsegmenttree int treeindex,int l,int r int lefttreeindex leftchild treeindex int rig...