luogu1541 烏龜棋 四維dp

2021-09-30 16:28:02 字數 1058 閱讀 9633

我們發現四種卡牌每種的張數不超過40,所以4種都可以放進狀態裡,40^4=2560000,但是再把現在走到哪一位i放進狀態裡,就炸了

我們發現每種卡牌用了幾個,a,b,c,d,現在的位置=a1+b2+c3+d4+1

轉移

if(a>0)f[a][b][c][d]=max(f[a][b][c][d],f[a-1][b][c][d]+s[1+pos]);

if(b>0)f[a][b][c][d]=max(f[a][b][c][d],f[a][b-1][c][d]+s[1+pos]);

if(c>0)f[a][b][c][d]=max(f[a][b][c][d],f[a][b][c-1][d]+s[1+pos]);

if(d>0)f[a][b][c][d]=max(f[a][b][c][d],f[a][b][c][d-1]+s[1+pos]);

#include#include#include#include#include#include#include#include#define pos a+2*b+3*c+4*d

using namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

inline int read()

while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();

return x*f;

}int f[50][50][50][50];

int s[400];

int main()

int s1=0,s2=0,s3=0,s4=0;

for(i=1;i<=m;i++)

f[0][0][0][0]=s[1];

for(int a=0;a<=s1;a++)

}} }

cout<

return 0;

}

luogu1541 烏龜棋 動態規劃

一行格仔,每個格仔裡有數字。一些卡片,卡片上有1 2 3 4這幾種數字。一開始你在格仔1,隨後每次選乙個卡片,你可以前進卡片上的數字個格仔,得到格仔上的分數,然後講該卡片丟棄。求取卡片的順序,使得得到的分數之和最大。定義 a 陣列為格仔上的各個數字,f p,a,b,c,d 為從位置1走到位置 p 已...

luogu1541 烏龜棋 帶技巧的揹包

乙個n格的跑道,每個格仔上有得分 要求烏龜從第一格走到第n格,有4種共m張牌可以用 1號牌可以移動1格,2號派可以移動2格。計算落腳點的得分 資料保證剛好卡牌用完,落在終點,問如何調整牌的順序,得到最大得分。思路 看他寫就好 參考 luogu1541 烏龜棋 帶技巧的揹包 f x y i j 表示 ...

DP 四維陣列 P1541 烏龜棋

題目背景 小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。題目描述 烏龜棋的棋盤是一行 n個格仔,每個格仔上乙個分數 非負整數 棋盤第 1格是唯一的起點,第 n格是終點,遊戲要求玩家控制乙個烏龜棋子從起點出發走到終點。烏龜棋中 m張爬行卡片,分成 4種不同的型別 m張卡片中不一定包含所有 4種型別的...