這個題的基本狀態是當前這塊木頭需要不需要維修,第二狀態是要以怎麼樣的形式(連續多少塊)維修,一一枚舉取最大值即可。值得一說的是,除了0狀態(起始狀態),其餘都要初始化為最大值。
而第二狀態的列舉需要從0開始,0代表現有的所有都全修,到i-1為止,i-1代表就修它自己(這個長度由i-j確定)。
//#include#include #include #include #include #include #include #include #include #include #define determination main
#define lldin(a) scanf_s("%lld", &a)
#define println(a) printf("%lld\n", a)
#define reset(a, b) memset(a, b, sizeof(a))
const int inf = 0x3f3f3f3f;
using namespace std;
const double pi = acos(-1);
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int mod = 1000000007;
const int tool_const = 19991126;
const int tool_const2 = 2000;
inline ll lldcin()
while (c >= '0' && c <= '9')
return si * tmp;
}///untersee boot ixd2(1942)
/**although there will be many obstructs ahead,
the desire for victory still fills you with determination..**/
/**last remote**/
ld a[5000],dp[5000];
int determination()
cout << fixed<< setprecision(3) << dp[n] << endl;
return 0;
}
DP 維修柵欄
農場的柵欄年久失修,出現了多處破損,晶晶準備維修它,柵欄是由n塊木板組成的,每塊木板可能已經損壞也可能沒有損壞。晶晶知道,維修連續m個木板 這m個木板不一定都是損壞的 的費用是sqrt m 可是,怎樣設計方案才能使總費用最低呢?請你寫程式幫忙計算。第一行包含乙個整數n n 2500 表示柵欄的長度。...
DP 維修柵欄
農場的柵欄年久失修,出現了多處破損,晶晶準備維修它,柵欄是由n塊木板組成的,每塊木板可能已經損壞也可能沒有損壞。晶晶知道,維修連續m個木板 這m個木板不一定都是損壞的 的費用是sqrt m 可是,怎樣設計方案才能使總費用最低呢?請你寫程式幫忙計算。第一行包含乙個整數n n 2500 表示柵欄的長度。...
最短Hamilton路徑 upc 狀壓DP
題目描述 給定一張 n n 20 個點的帶權無向圖,點從 0 n 1 標號,求起點 0 到終點 n 1 的最短hamilton路徑。hamilton路徑的定義是從 0 到 n 1 不重不漏地經過每個點恰好一次。輸入第一行乙個整數n。接下來n行每行n個整數,其中第i行第j個整數表示點i到j的距離 乙個...