poj 3254 Corn Fields -- 狀態壓縮DP
摘要: dp[i][j]:1行到第i行的狀態為j時最多的方法數
從第0行一直推到第n行
閱讀全文
posted @
2009-05-15 21:17 longshen 閱讀(592) |
評論 (0) 編輯
poj 1947 Rebuilding Roads -- 樹形DP
摘要: dp[s][i]:記錄s結點,要得到一棵j個節點的子樹去掉的最少邊數
考慮其兒子k
1)如果不去掉k子樹,則
dp[s][i] = min(dp[s][j]+dp[k][i-j]) 0 <= j <= i
2)如果去掉k子樹,則
dp[s][i] = dp[s][i]+1
總的為
dp[s][i] = min (min(dp[s][j]+dp[k][i-j]) , dp[s][i]+1 )
閱讀全文
posted @
2009-05-15 11:37 longshen 閱讀(2263) |
評論 (2) 編輯
poj 1837 Balance -- 動態規劃
摘要: dp[i][mm+k]:取前i個時,天平處于k狀態的方法數
mm+k:< mm為左邊重, > mm 為右邊重
dp[i][mm+k] +=
dp[i-1][mm + k-weight[i]*arm[j]], (j:1->c)};
閱讀全文
posted @
2009-05-15 09:53 longshen 閱讀(498) |
評論 (0) 編輯
poj 2186 Popular Cows -- 強連通分支
摘要: 研究了Lynncui牛的代碼,才知道解題思路:
先Tarjan強連通縮點,(假設共n2個)得到的id[i]編號為0的分支,其出度為0(有可能是Popular Cows)。
再判斷其他強連通分支是否有出度
1)如果其中有一個分支沒有出度,則0分支不可能是Popular Cows(considered popular by every other cow)
2)如果其他所有強連通分支都有出度,
閱讀全文
posted @
2009-04-23 18:17 longshen 閱讀(604) |
評論 (0) 編輯
poj 2762 Going from u to v or from v to u? -- 強連通
摘要: 思路模糊時看了DieIng大牛的思路,寫了出來...
思路:Tarjan算法計算強連通分支,然后縮點,再求其拓撲序。
(假設求得的拓撲序存儲在topo[MAX]中) topo[i] 與 topo[i+1] 存在邊連通(i到i+1 或i+1到i),則定有i到i+1的邊。
而如果每個topo[i] 與 topo[i+1] 都存在邊連通(即有i到i+1的邊)時,topo[i] 到任意topo[j]便都要邊連通。
閱讀全文
posted @
2009-04-23 09:08 longshen 閱讀(543) |
評論 (0) 編輯
poj 1191 棋盤分割 -- 動態規劃
摘要: dp[k][x1][y1][x2][y2]:左上角坐標為(x1,y1),右下角坐標為(x2,y2)
的棋盤,設它把切割k次以后得到的k+1塊矩形的總分平方和最小值.
s[x1][y1][x2][y2]:左上角坐標為(x1,y1),右下角坐標為(x2,y2)
的棋盤的總和的平方
dp[k][x1][y1][x2][y2] =
1)按橫的劃分: min(dp[k-1][x1][y1][f][y2]+s[f+1][y1][x2][y2]
, dp[k-1][f+1][y1][x2][y2]+s[x1][y1][f][y2]);
2)按豎的劃分: min(dp[k-1][x1][y1][x2][f]+s[x1][f+1][x2][y2]
, dp[k-1][x1][f+1][x2][y2]+s[x1][y1][x2][f]);
閱讀全文
posted @
2009-04-21 19:57 longshen 閱讀(1594) |
評論 (0) 編輯