t1:先判斷相鄰的兩行哪些串可以同時選,這個可以對上一行建trie,然後讓下一行的每乙個串在trie上走。
判斷出關係之後就可以直接dp了。
t2:首先很容易想到矩陣乘法,不過時間複雜度是1024^3,所以要優化。
考慮原來我們設的狀態是g[i][j]表示從i狀態轉移到j狀態的方案數,這樣轉移要1024^3。這時我們發現對於i^j相同的g[i][j]的值一定是相同的,因為它們的變化量相同。
所以我們把狀態改為g[i]表示變化量為i的方案數,轉移方程即為g'[x^y]+=g[x]*g[y],這樣就可以1024^2完成矩陣乘法。
接下來我們首先求出g^(k-1),即每k次轉換的每個變化量的方案數。然後利用g求a[i][j]表示從數字i經過k次變換變為數字j的方案數,接著求a^(n/k),這個是100^3的。
對於剩下的n%k次變換,可以用類似方案求。
NOIP提高 通訊
tarjan縮點 互相到達的兩個點,就是在同乙個強連通分量裡面的點的邊權都沒有用了。那麼明顯可以用tarjan來縮點。需要串上n個點 那麼這個東西很像乙個最小生成樹,可惜不是。那麼我們另闢蹊徑。既然要保證每個點都在的出的圖中,那麼最優的方案就只有n 1條邊,那麼每個除了1號點只需要有一條邊練過來就好...
NOIP提高 錢倉
比賽的時候看錯題目了,還以為是這個錢可以向兩邊流,結果,樣例怎麼不對啊!原來錢,只能向後流tat 貪心 那麼直接貪心就好了。每個錢為0的點,因為是單方向流動的,所以肯定是最近的那個點流過來的。所以先找出乙個合法的初始節點,滿足每個零都會被前面的點填滿。維護每乙個非零的點的左邊乙個非零的點,其實每次暴...
NOIP提高組 矩陣
在麥克雷的面前出現了乙個有n m個格仔的矩陣,每個格仔用 或 表示,表示這個格仔可以放東西,則表示這個格仔不能放東西。現在他拿著一條1 2大小的木棒,好奇的他想知道對於一些子矩陣,有多少種放木棒的方案。因為棍子是1 2的,所以很容易就能發現,兩個被分割的塊,除了跨越兩個塊擺放木棍的方案數會對答案有影...