問題 E 小A盜墓

2021-09-27 10:10:11 字數 1678 閱讀 3555

問題 e: 小a盜墓

一開始想動態主席樹,但是太麻煩了,所以就線段樹。

詢問時區間查詢sum和以及xor異或和,然後利用規律通過sum和找這段區間應該開始的be和應該結束的en,然後利用函式xor_n求be到en的字首異或和,然後將其與線段樹查詢的異或和相比較即可。

學到了乙個小知識點,求1到n的異或和。

注意有時候可能要開unsigned long long。

模板:

long

long

xor_n

(long

long n)

#include

#include

using

namespace std;

const

int max_n=

501000

;struct nodea[max_n*4]

;long

long b[max_n]

;void

update

(int k)

void

build

(int k,

int l,

int r)

int mid=

(l+r)

>>1;

build

(k<<

1,l,mid)

;build

(k<<1|

1,mid+

1,r)

;update

(k);

}void

change

(int k,

int x,

int y)

int mid=

(a[k]

.l+a[k]

.r)/2;

if(x<=mid)

change

(k<<

1,x,y)

;else

change

(k<<1|

1,x,y)

;update

(k);

}long

long

query_sum

(int k,

int l,

int r)

long

long

query_xor

(int k,

int l,

int r)

long

long

xor_n

(long

long n)

intmain

(void

)build(1

,1,n);

for(i=

0;i)else

else

//cout<<"hi\n";

long

long xxor=

xor_n

(en)

^xor_n

(be-1)

;//cout<<"hi\n";

if(b==xxor)

printf

("yes\n");

else

printf

("no\n");

}else

else}}

}return0;

}

小A盜墓 upc(線段樹)

upc問題 e 小a盜墓 時間限制 5 sec 記憶體限制 128 mb 題目描述 小a終於通過了保安的考驗,來到了古墓門前,古墓門前有n根柱子,第i根柱子的高度是整數。古墓的門上會彈出一些暗號,機智小a猜到這個暗號表示詢問第l到第r根柱子的高度在公升序排序後是否構成一段連續且上公升的序列。並且這些...

E 迷宮問題

定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。input 乙個5 5的二維陣列,表示乙個迷宮。資料保證有唯一解。output 左上角到右下角的最短路徑,格式如樣例所示。sa...

問題 E 計數問題

時間限制 1 sec 記憶體限制 128 mb 提交 30 解決 22 提交狀態 討論版 命題人 admin 題目描述 試計算在區間 1 到 n 的所有整數中,數字 x 0 x 9 共出現了多少次?例如,在 1 到 11 中,即在 1 2 3 4 5 6 7 8 9 10 11 中,數字 1 出現了...