/*
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的異或和。...