poj1695 dp思維 不錯

2021-08-30 02:25:58 字數 618 閱讀 8146

題意:給三輛車,將1~n這n個點依次跑完,也就是說要想到達i+1,必須先到達i,

每兩個點之間都有花費,問最小的話費是什麼。

思路:設dp[i][j][k],為走的最遠的車,次元的車,最近的車在位置i,j,k的時候的最小

花費。具體轉移看**,感覺非常巧妙。

#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

int dp[31][31][31];//分別為走的最遠,次遠,最近的車的位置

int cost[31][31], n;

int main()

}memset(dp, 0x3f, sizeof dp);

dp[1][1][1]=0;

for(int i=1; i<=n; i++)}}

int mn=inf;

for(int j=1; j<=n; j++)

for(int k=1; k<=j; k++)

mn=min(mn, dp[n][j][k]);

printf("%d\n", mn);

}return 0;

}

POJ 1171 Letter Game 解題思路

原題鏈結 題目意思大致如下 首先給你乙個可用字符集,比如 prog 那麼我們需要計算的單詞,都是在這個集合內的元素,否則單詞的權值是0 那麼可以組成的單詞rog pog rop等等 計算單詞的最大權值,但是單詞可以拼接起來。但是拼接起來後還是要在可用集合中,且個數都不能超支。下面是題目對用的程式 1...

poj3342 poj2342 樹形dp入門

poj3342 最近做樹形dp,渣渣 成喳喳喳辣,真是不開森。還是適合做基礎入門題。題意 比較好理解。就是一棵樹,選m個點,兒子和父親不能同時選。問最多能選多少個 題目中說的是上級,當然我這裡省略就是用父親節點和孩子結點表示啦 其實dp的內容很好想,d i 0 表示第i個點不選的結果,d i 1 表...

POJ 3254,POJ 1185(狀態壓縮DP)

poj 3254 corn fields 我們可以用二進位制列舉第一行狀態,用1代表在這種植,0代表不種植,第一行確定了,第二行就可以根據第一行不斷累加。dp row state 代表第row行用state狀態時的方法數。如果這個state合法,則dp row state dp row 1 stat...