小A盜墓 upc(線段樹)

2021-10-09 09:56:37 字數 2828 閱讀 1558

/*

upc問題 e: 小a盜墓

時間限制: 5 sec 記憶體限制: 128 mb

題目描述

小a終於通過了保安的考驗,來到了古墓門前,古墓門前有n根柱子,第i根柱子的高度是整數。古墓的門上會彈出一些暗號,機智小a猜到這個暗號表示詢問第l到第r根柱子的高度在公升序排序後是否構成一段連續且上公升的序列。並且這些柱子的高度還可能在彈出暗號的過程**現變化。

現在小a需要回答出每個暗號的答案

輸入第一行兩個整數,表示柱子的個數n以及操作的個數m。

第二行n個整數,第i個整數表示第i根柱子的高度。

接下來m行,每行三個整數opt, x, y。當opt=1時,表示把第x根柱子的高度改為y;當opt=2時,表示詢問第x到第y根柱子的高度在公升序排序後是否構成一段連續且上公升的序列。若是,則輸出yes,否則輸出no。

輸出對於每個詢問輸出一行yes或no。

樣例輸入

樣例資料

5 51 2 3 4 5

2 1 5

2 2 3

2 3 3

1 3 6

2 3 5

樣例輸出

yesyes

yesyes

*/#include

#define inf 0x3f3f3f3f3f3f3f3f

using

namespace std;

typedef

long

long ll;

const

int maxn =

1e6+5;

struct node rt[maxn *4]

;int co[maxn]

;inttl(

int x)

inttr

(int x)

void

pushup

(int x)

void

build

(int x,

int l,

int r)

int mid =

(l + r)/2

;build(tl

(x), l, mid)

;build(tr

(x), mid +

1, r)

;pushup

(x);

}void

updata

(int x,

int pos,

int val)

int mid =

(rt[x]

.left + rt[x]

.right)/2

;if(pos <= mid)

updata(tl

(x), pos, val)

;else

updata(tr

(x), pos, val)

;pushup

(x);

}ll query

(int x,

int l,

int r)

int mid =

(rt[x]

.left + rt[x]

.right)/2

;if(r <= mid)

return

query(tl

(x), l, r)

;else

if(l > mid)

return

query(tr

(x), l, r)

;else

return

query(tl

(x), l, mid)

+query(tr

(x), mid +

1, r);}

ll getmin

(int x,

int l,

int r)

int mid =

(rt[x]

.left + rt[x]

.right)/2

; ll ret = inf;

if(r <= mid)

return

min(ret,

getmin(tl

(x), l, r));

else

if(l > mid)

return

min(ret,

getmin(tr

(x), l, r));

else

return

min(

getmin(tl

(x), l, mid)

,getmin(tr

(x), mid +

1, r));

}ll getmax

(int x,

int l,

int r)

int mid =

(rt[x]

.left + rt[x]

.right)/2

; ll ret =

-inf;

if(r <= mid)

return

max(ret,

getmax(tl

(x), l, r));

else

if(l > mid)

return

max(ret,

getmax(tr

(x), l, r));

else

return

max(

getmax(tl

(x), l, mid)

,getmax(tr

(x), mid +

1, r));

}int

main()

}return0;

}

upc 生命曲線 線段樹 lazy

生命曲線 時間限制 2 sec 記憶體限制 128 mb 題目描述 mr.l最近得了妄想症,他對自己生命的歷史和未來產生了一些幻覺。他的眼前浮現出了自己的生命價值曲線。這條生命線不斷地變化,使他不斷懷疑著自己存在的意義 mr.l的生命價值曲線可以被簡化為乙個代表著mr.l的每個階段的生命價值的序列。...

中石油訓練賽 小A盜墓 線段樹 異或結論

題目大意 給出n個數,以及m個操作,每個操作分為兩種 1 x y 將第x個數變為y 2 x y 判斷閉區間 x,y 中的數能否在進行公升序排序後構成一段連續且上公升序列 題目分析 因為涉及到了區間修改和區間查詢的問題,所以我們首先想到利用線段樹來輔助解決,第乙個操作很簡單,單點修改,主要是我們該怎麼...

問題 E 小A盜墓

問題 e 小a盜墓 一開始想動態主席樹,但是太麻煩了,所以就線段樹。詢問時區間查詢sum和以及xor異或和,然後利用規律通過sum和找這段區間應該開始的be和應該結束的en,然後利用函式xor n求be到en的字首異或和,然後將其與線段樹查詢的異或和相比較即可。學到了乙個小知識點,求1到n的異或和。...