NC16590 烏龜棋 記憶化搜尋

2021-10-08 11:42:38 字數 3176 閱讀 2403

題目鏈結

題意:

有 n個

格仔,1

為起點,

n為終點

有n個格仔,1為起點,n為終點

有n個格仔,

1為起點

,n為終點每個

格仔有一

個分

數每個格仔有乙個分數

每個格仔有一

個分數有m種

卡片,每

種卡片有

數字1,

2,3,

4有m種卡片,每種卡片有數字1,2,3,4

有m種卡片,

每種卡片

有數字1

,2,3

,4代 錶能

走的步數

代表能走的步數

代表能走的步數走到

一點取的

該點分數

,所有卡

片相加恰

好到

n走到一點取的該點分數,所有卡片相加恰好到n

走到一點取的

該點分數

,所有卡

片相加恰

好到n求最大

能得到的

分數

求最大能得到的分數

求最大能得到

的分數題解:

n

<

=350,m

<

=120

n<=350, m<=120

n<=3

50,m

<=1

20數 不是

很大,所

以直接進

行搜

索數不是很大,所以直接進行搜尋

數不是很大,

所以直接

進行搜尋

由 於順

序是不一

定的,所

以要對4

種數字進

行分別搜

索由於順序是不一定的,所以要對4種數字進行分別搜尋

由於順序是不

一定的,

所以要對

4種數字

進行分別

搜尋4

120的複雜

度肯定也

是不行的

4^的複雜度肯定也是不行的

4120的復

雜度肯定

也是不行的所以

就進行記

憶化搜尋

所以就進行記憶化搜尋

所以就進行記

憶化搜尋

d p[

a][b

][c]

[d]表

示從1開

始用了a

張數字1

,b張數

字2,c

張數字3

,d張數

字4得到

的最大分

數dp[a][b][c][d]表示從1開始用了a張數字1,b張數字2,c張數字3,d張數字4得到的最大分數

dp[a][

b][c

][d]

表示從1

開始用了

a張數字

1,b張

數字2,

c張數字

3,d張

數字4得

到的最大

分數每 次搜

索只要數

字仍夠使

用,就往

下搜尋,

取最大值

進行記憶

每次搜尋只要數字仍夠使用,就往下搜尋,取最大值進行記憶

每次搜尋只要

數字仍夠

使用,就

往下搜尋

,取最大

值進行記憶這樣

複雜度就

剪到了12

04,可

以完成搜

索這樣複雜度就剪到了120^4,可以完成搜尋

這樣複雜度就

剪到了1

204,

可以完成

搜尋ac**

/*

author : zzugzx

lang : c++

blog : blog.csdn.net/qq_43756519

*/#include

using

namespace std;

#define fi first

#define se second

#define pb push_back

#define mp make_pair

#define all(x) (x).begin(), (x).end()

#define endl '\n'

#define sz(x) (int)x.size()

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

typedef pair pll;

const

int mod =

1e9+7;

//const int mod = 998244353;

const

double eps =

1e-6

;const

double pi =

acos(-

1.0)

;const

int maxn =

1e6+10;

const

int n =

120+5;

const ll inf =

0x3f3f3f3f

;const

int dir[

2]=,

,,,,

,,};

int v[maxn]

, cnt[10]

, dp[n]

[n][n]

[n], n, m;

intdfs

(int p,

int a,

int b,

int c,

int d)

intmain()

cout <<

dfs(1,

0,0,

0,0)

;return0;

}

codevs天梯 烏龜棋

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

線性DP 烏龜棋

推薦 炒雞棒的萌新dp題單 大概?acwing 312.烏龜棋 小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。烏龜棋的棋盤只有一行,該行有 n 個格仔,每個格仔上乙個分數 非負整數 棋盤第 1 格是唯一的起點,第 n 格是終點,遊戲要求玩家控制乙個烏龜棋子從起點出發走到終點。烏龜棋中共有 m 張爬...

烏龜棋 動態規劃

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