原创 HDOJ 5411 CRB and Puzzle (矩陣快速冪)

題意 給出一個鄰接矩陣,求走k步以內所有的路徑數量。 思路 離散數學裏面學的嘛,可達矩陣的k次方就是走k步時的可達矩陣,然後就轉化成計算A+A2...Am 然後想到了POJ的那個經典題目,通過對m二分來求,然後瘋狂TLE= =(

原创 POJ 1273 Drainage Ditches (最大流)

題意 求一個邊小於200點小於200的圖的最大流。 思路 因爲這裏點比較少,直接用Edmonds_Karp(BFS)求就可以了,複雜度爲O(E2V) ,bfs的複雜度是O(E),增廣路的次數爲V*E Ford-Fulkerson

原创 POJ 3580 SuperMemo (Splay各種區間操作)

題意 給出一個序列有6種操作 1.ADD x y D 2.REVERSE x y 3.REVOLVE x y T 4.INSERT x P 5.DELETE x 6.MIN x y x,y就是區間[x,y] 思路 S

原创 POJ 1155 TELE (樹形揹包)

題意 1爲根節點,有m個葉節點,其他爲中間結點,每個結點的權值代表他願意付出的錢,邊的權值代表聯通兩節點的代價,求不虧損的情況下最多能到達多少個葉節點。 思路 另dp[u][i]表示根節點爲u的子樹此時裝了i個葉節點的盈利情況(∑

原创 UESTC 594 我要長高 (單調隊列優化DP)

題意 給出一個序列,沒兩個之間差值乘C就是虧損的錢數,可以給一些數列以一定的代價變大,不能減小,求增加方案令最後的損失最小。 思路 令dp[i][j]表示第i個人身高爲j時的當前損失。 我們能得到dp[i][j]=min(dp[

原创 HDOJ 2457 DNA repair (AC自動機+DP)

題意 給出一些子串和一個DNA串,求最少需要變換多少個字符可以讓這個DNA不包含任意一個子串。 思路 dp[i][j]表示在字符串i處在trie圖的節點j處時的最小改變數。 然後對字符串和每個節點都枚舉遞推一遍就行了。 代碼 #

原创 HDOJ 3415 Max Sum of Max-K-sub-sequence(線段樹優化DP)

題意 給出一個環,求連續的k個數字中連續和最大是是多少,子串的開始下標和結束座標是多少。 思路 第一次做這題的時候是在學單調隊列的時候,單調隊列的做法戳這裏 這裏我是直接dp搞,dp[i]=sum[i]−min(sum[j])i

原创 POJ 1006 Biorhythms (中國剩餘定理)

題意 人的身體智力和情感都有高峯低估期,給出這三個的起始天和現在的天數,求還需要多少天能達到三個高峯。 思路 令這個起始天爲a, b, c,那麼達到的天數就是ans。 ans % 23 = a; ans % 28 = b; an

原创 POJ 3420 Quad Tiling (瓷磚問題+矩陣快速冪)

題意 用1*2的瓷磚拼成4*n的矩形,求方案數。(n <= 1e9) 思路 瓷磚問題還是比較套路的,在數據比較小的時候可以直接把每一行狀態壓縮一下,然後dfs求出方案。 在這樣數據比較大的時候我們使用pre和now構造出矩陣,

原创 Codeforces 149D Coloring Brackets (不錯的區間DP)

題意 給出一個合法的括號序列,要求給這個序列染色,求染色方案。 1.可以選擇無色、紅色、藍色。 2.每一對括號要有且僅有一個染色的括號。 3.相鄰的括號不能有相同的顏色(無色沒關係) 思路 顯然是個區間DP,然後因爲他的轉移

原创 POJ 2891 Strange Way to Express Integers (中國剩餘定理)

題意 求最小的x,滿足x%m[i]=r[i]。 思路 裸的不互質的中國剩餘定理(順便誇一下這個CRT2的板子真的挺好用的=。= 代碼 #include <stdio.h> #include <string.h> #include

原创 HDOJ 1430 魔板 (bfs+映射)

題意 對於一個上面4個數下面4個數的魔板,可以如下操作: A: 上下兩行互換 B: 每行循環右移一格 C: 中間4個方塊順時針旋轉一格 給你魔板的初始狀態與目標狀態,請給出由初態到目態變換數最少的變換步驟,若有多種變換方案

原创 51NOD 1259 整數劃分 (五邊形定理)

題意 將N分爲若干個整數的和,求有多少種不同的劃分方式。 思路 幾個月前妄圖用DP過這題失敗了= =,今天隊友問起這題纔想起來我還沒過,看到discuss說用五邊形定理趕緊去學習了一波。。。 參考ACdreamer巨巨的博客:h

原创 Codeforces 675C Money Transfers (掃描)

題意 每個銀行都有都有一個需求,有的是正數有的是負數。 要求到最後通過數字轉移全部銀行都變成0,求最小移動步數。 思路 首先把他看成一個環來考慮,每次轉移都要經過全部的有需求的銀行,那麼顯然我們可以找到一個不用走的區間也就是中間

原创 HDOJ 2196 Computer (經典題)

題意 有一個樹,每條邊都有權值,求每一個點出發的鏈的最大權值和。 思路 很經典的樹形dp題目,和樹的直徑的性質相關。 從任意點出發能到達的最遠的點一定是直徑的一個端點,然後再從這個端點出發能到達的最遠的點就是另一個斷點,中間的邊