原创 POJ - 1062 昂貴的聘禮 最短路建圖問題

題目描述 年輕的探險家來到了一個印第安部落裏。在那裏他和酋長的女兒相愛了,於是便向酋長去求親。酋長要他用10000個金幣作爲聘禮才答應把女兒嫁給他。探險家拿不出這麼多金幣,便請求酋長降低要求。酋長說:“嗯,如果你能夠替我弄到大祭司

原创 URAL - 1057 Amount of Degrees 數位DP

思路 對於一個數 n, 我們求他的 0 - n 的滿足要求的方案數, 對於區間[l, r] = sum[r] - sum[l - 1] 我們先預處理組合數, 存下對應的值 我們這時取出n的每一位的值, 我們去判斷一下這位的樹,

原创 HDU - 2089 不要62 數位DP

思路 由於HDU數據範圍不大, 所以直接暴力打表就可以過,但是數據範圍如果擴大到10^9, 就需要數位DP來做 f[i ,j] 存的 一共i 位, 最高位是j的方案數 在遞推時, 對每個不合法的情況進行捨棄 代碼 #incl

原创 數字遊戲 求不降數 數位DP

題目描述 科協裏最近很流行數字遊戲。 某人命名了一種不降數,這種數字必須滿足從左到右各位數字呈非下降關係,如 123,446。 現在大家決定玩一個遊戲,指定一個整數閉區間 [a,b],問這個區間內有多少個不降數。 輸入格式 輸入包

原创 POJ - 1463 Strategic game 樹形DP

題目大意 給一棵樹, 在節點上放一個士兵, 可以把與節點相連的邊都監測到, 求把所有的邊都監測到所放的最少的士兵 樣例 Sample Input 4 0:(1) 1 1:(2) 2 3 2:(0) 3:(0) 5 3:(3)

原创 皇宮看守 樹形DP + 狀態機

樣例 樣例輸入 6 1 30 3 2 3 4 2 16 2 5 6 3 5 0 4 4 0 5 11 0 6 5 0 樣例輸出 25 思路 代碼 #include <iostream> #include <cstring>

原创 樹的直徑,樹的最長路徑相關計算

無權值時, 求樹的最長的一個直徑, 以任意一個點, 找到離它最遠的一點u, 再找到離它最遠的一點v, u -> v 就是這顆樹的直徑 有權值時, 以任意一個帶點爲更節點, 然後去遍歷他的子樹, 然後每次遍歷, 記錄它的最長子樹中

原创 劃分凸多邊形 區間DP + 高精度運算

思路 對於每個三角形, 我們的len從3開始枚舉, f[l, r]代表區間[l, r]的最小值, 然後我們就從一般的區間DP角度去做, 就可以得到樣例的結果 #include <iostream> #include <cst

原创 NOIP2003提高組 加分二叉樹 區間DP+記錄方案

題目描述 設一個n個節點的二叉樹tree的中序遍歷爲(1,2,3,…,n),其中數字1,2,3,…,n爲節點編號。 每個節點都有一個分數(均爲正整數),記第i個節點的分數爲di,tree及它的每個子樹都有一個加分,任一棵子樹sub

原创 POJ - 1191 / NOI 1999 棋盤分割 記憶化搜索DP

思路 代碼 #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <cmath> using names

原创 POJ - 3254 Corn Fields 狀態壓縮DP/填充網格圖形

思路 代碼 #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <vector> using name

原创 SGU - 223 Little Kings 狀態壓縮DP

思路 用f[i, k, a] += f[i - 1, k - cnt[a], b]代表狀態轉移, 其中, i代表第i行, k代表有k個國王, a 代表狀態a a , b是兩個二進制數, 位置上是1代表這個位置有國王, 反之,

原创 POJ - 1185 炮兵陣地 狀態壓縮DP / 3狀態

思路 代碼 #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <vector> using name

原创 大盜阿福 狀態機模型 2狀態

題目描述 阿福是一名經驗豐富的大盜。趁着月黑風高,阿福打算今晚洗劫一條街上的店鋪。 這條街上一共有 N 家店鋪,每家店中都有一些現金。 阿福事先調查得知,只有當他同時洗劫了兩家相鄰的店鋪時,街上的報警系統纔會啓動,然後警察就會蜂擁

原创 POJ 2411 Mondriaan's Dream 狀態壓縮DP

思路 用二進制表示當前行的狀態, 0表示這個位置是空的, 1表示當前位置是填充了的, 而且會在i + 1行的這個位置填充上, 即是這個位置存在一個1X2的小矩形, 且這是這個矩形的上半部 上一行的狀態 k, 這一行的狀態j ,