問題 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 出現了...