t1:這一題有很多種方法都能過。
設f[j]表示選數的集合為j的構成兩條相等的邊選的是集合為j的數(f[j]=0/1),這個可以用3^n的暴力來求。
求出了f之後,我們考慮如果存在j和k,使f[j]=f[k]=1且j&k=0,那麼我們就可以用j集合裡的數的和/2*k集合裡的數的和/2來更新答案。這個我們可以通過列舉j,然後列舉與j沒有交集的k來做。
t2:我們發現食人魚的運動週期最多是12,那麼我們可以列出dp方程,然後用矩陣乘法來轉移。
t3:這一題看似平衡樹,其實用線段樹就可以了。
發現所操作都不影響珠子之間的順序,也就是說項鍊的編號一定是順時針1~n或逆時針1~n的。那麼我們就設a表示原1號位置現在的位置,b(b=1/-1)表示現在項鍊的順序是順時針還是逆時針。
然後我們就用線段樹來維護區間答案。線段樹要維護三個值,分別是區間答案、區間左端點顏色,區間右端點顏色。
對於r k操作,我們直接把a+k就行了。
對於f操作,就是b*=(-1),同時a要轉到對稱的位置。
p操作就是區間修改。
c和cs就是區間查詢。
細節較多,有一些就不講了。下面貼一下怎樣查詢現在某個位置上對應的原項鍊的編號的**:
int get(int x)
NOIP提高組 矩陣
在麥克雷的面前出現了乙個有n m個格仔的矩陣,每個格仔用 或 表示,表示這個格仔可以放東西,則表示這個格仔不能放東西。現在他拿著一條1 2大小的木棒,好奇的他想知道對於一些子矩陣,有多少種放木棒的方案。因為棍子是1 2的,所以很容易就能發現,兩個被分割的塊,除了跨越兩個塊擺放木棍的方案數會對答案有影...
NOIP提高組2005 過河
過河 river 問題描述 在河上有一座獨木橋,乙隻青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由於橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點 0,1,l 其中l是橋的長度 座標為0的點表示橋的起點,座標為l的...
NOIP提高組 20151029模擬
其實這套題目並不算太難,但是還是發揮不了100 水平。第一題直接線性篩法,求出質數,然後就可以判斷乙個數是否為質數了。這道題還可以用miller rabin去求,後者的速度較快,如果資料再大些,就要使用後者了。第二題,比賽時發現了,當n 7時,答案會每四個一迴圈,但是就沒有繼續往下想,其實想下去會想...