2017 07 09 NOIP提高組 模擬賽B組

2021-08-03 14:29:43 字數 697 閱讀 2389

t1:樹形dp。

我們把不能同時購買的物品連邊,因為題目說明不會成環,所以連出來的就是一片森林。那麼我們針對每一棵樹做一次dp,最終答案就是把所有樹的答案加起來。

那麼我們怎樣來計算每一棵樹的答案呢?

我們設f[i][0/1],0表示第i個節點不選,1表示選的最大值,那麼一棵樹肯定是父節點擊了子節點就不能選,所以:

f[i][0]=f[i][0]+max(f[i][0],f[j][1])

f[i][1]=f[i][1]+f[j][0]

(j為i的子節點)

最後要把f[i][1]加上a[i]。

總結:凡是有關幾個物品不能同時選的問題,一定與圖論有關,因為可以連邊。下次遇上這種問題,優先考慮圖論。

t2:刪除每兩個有敵軍的點之間的路徑上的最短邊即可,注意一下以下幾個細節:

1、可能會出現有多個組合所要刪除的最短邊相同。

2、如有多條最短邊,那麼統一刪除編號最小的那一條。

總結:這題因為陣列開小了而丟了30多分。以後在檢查時重點檢查陣列大小和變數型別,並且陣列大小要根據與大小有關的因素來計算(寫在紙上),不能憑空想。

t3:以1位根節點,設s[i]表示第i個節點及其子樹的節點的個數,那麼我們可以列舉每乙個節點,然後判斷它是否合法 。

怎樣來判斷呢?設當前列舉到的節點為x,則如果把x刪掉那麼剩下的幾部分分別為n-s[x]以及x每乙個子節點j的s[j],這個劃一下圖就能明白。

NOIP提高組 矩陣

在麥克雷的面前出現了乙個有n m個格仔的矩陣,每個格仔用 或 表示,表示這個格仔可以放東西,則表示這個格仔不能放東西。現在他拿著一條1 2大小的木棒,好奇的他想知道對於一些子矩陣,有多少種放木棒的方案。因為棍子是1 2的,所以很容易就能發現,兩個被分割的塊,除了跨越兩個塊擺放木棍的方案數會對答案有影...

NOIP提高組2005 過河

過河 river 問題描述 在河上有一座獨木橋,乙隻青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由於橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點 0,1,l 其中l是橋的長度 座標為0的點表示橋的起點,座標為l的...

NOIP提高組 20151029模擬

其實這套題目並不算太難,但是還是發揮不了100 水平。第一題直接線性篩法,求出質數,然後就可以判斷乙個數是否為質數了。這道題還可以用miller rabin去求,後者的速度較快,如果資料再大些,就要使用後者了。第二題,比賽時發現了,當n 7時,答案會每四個一迴圈,但是就沒有繼續往下想,其實想下去會想...