hdu5550 Game Rooms 動態規劃

2021-07-07 01:17:20 字數 856 閱讀 2054

表示製杖,參考了一下別人的題解,做完發現自己整個人都不好了,竟然沒有發現這麼弱的dp方程,(我不知怎麼的,一開始居然想了乙個n^3的dp方程)

設dp[i][s]表示計算到第i個且將其放在該段的最後乙個,這一段全為s(0和1分別表示兩種運動)

那麼dp方程就是dp[i][s] = min,  j < i

valuesum(i, j)表示[i, j]區間內的員工到最近運動室的距離和

#include #include #include using namespace std;

const int maxn = 4005;

const int inf = 0x3f3f3f3f;

int n;

long long a[2][maxn], sum[2][maxn], value[2][maxn], dp[maxn][2];

long long leftcal(int l, int r, int s)

long long rightcal(int l, int r, int s)

long long areadist(int l, int r, int s)

}int main()

//initialize

memset(dp, inf, sizeof(dp));

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

//dp

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

}//output

printf("case #%d: %lld\n", kk, min(dp[n][0], dp[n][1]));

} return 0;

}

HDU 5550 dp 字首和優化

有個大樓有n層,每層都有兩種人,一種喜歡的打球,一種喜歡游泳,現在要你在每一層要麼開設球館,要麼開設游泳館,分配完畢以後,打球的要到球館,游泳的要到游泳館,問最優分配下,所有人要移動的最短距離和是多少?dp i 0 1 表示第i層布置為0或1,且i 1層為1或0 與第i層相反 的最小代價。dp i ...

hdu 3389 Game(階梯博弈)

1 3 4號盒子是最終狀態,所有出始狀態都會經過若干步操作變成這個最終狀態。如果仔細分析,會發現 n 6 0 或 2 或 5的盒子,經過奇數步轉移到1 3 4中去,其他的則須經過偶數步才能轉移過去。易證 偶數步的不用管,對於奇數步的操作只需轉換成nim博弈,利用異或運算判斷是否必勝即可。includ...

hdu4701 Game(遞推博弈)

題意 alice初始有a元,bob有b元。有n個物品,第i個物品價值為ci。alice和bob輪流買一些 1 物品。不能移動的人輸。購買有乙個限制,對於第1 個之後物品,只有當第i 1個物品被購買後,第i個物品才能被購買。保證兩人都是最優操作,alice先手,問誰將取得勝利。1 n 1e6 0 a,...