2010提高組 烏龜棋 記憶優化搜尋

2021-10-08 11:46:46 字數 1177 閱讀 5320

題目:

有n個格仔,你有m張牌,每張牌上面有個數字,用了這張牌你就可以走這張牌上對應的數字了,每到達乙個格仔,你就會獲得格仔上相應的分數,問你如何合理的出牌,使分數最大化。

記憶優化搜尋可能會好寫一點

題解:

我們讓他從0開始,dfs的四個元素,表示的是當前使用了多少個1,2,3,4號牌。

但是為什麼我們計算的位置是a + b * 2 + c * 3 + d * 4 + 1,為什麼要有個+1,原因很簡單,是因為他是從1位置開始的,自動獲取1位置上面的分數。

邊界如何判斷呢,當所有撲克牌用完以後也就是說到達邊界了,當a+b+c+d==m時,即為到達邊界。

**:

/*keep on going never give up*/

#pragma gcc optimize(3,"ofast","inline")

#include

const

int maxn =

1e6+10;

const

int maxn =

0x3f3f3f3f

;const

int minn =

0xc0c0c00c

;typedef

long

long ll;

const

int mod =

100000000

;using

namespace std;

int dp[41]

[41][

41][41

];int num[10]

;int maps[

500]

;int imax=0;

int n,m;

intdfs

(int a,

int b,

int c,

int d)

intmain()

int x=

dfs(0,

0,0,

0);printf

("%d\n"

,x+maps[1]

);return0;

}

NOIP提高組2010 烏龜棋

題目 題目描述 為了準備乙個獨特的頒獎典禮,組織者在會場的一片矩形區域 可看做是平面直角座標系的第一象限 鋪上一些矩形地毯。一共有 n 張地毯,編號從 1 到n 現在將這些地毯按照編號從小到大的順序平行於座標軸先後鋪設,後鋪的地毯覆蓋在前面已經鋪好的地毯之上。地毯鋪設完成後,組織者想知道覆蓋地面某個...

NOIP2010提高組 烏龜棋

這題一眼dp,本來是設五維的 但是,咳咳,空超了!如何?我們在仔細地看一看dp陣列 我們可以發現,因為,當我們確定了剩下的卡片,我們就能確定了它當前所在的位置是 所以,我們可以直接將i去掉,perfect!那這樣的話,我們只要設四維就可以了。include define max x,y x xusi...

NOIP2010 提高組 烏龜棋 (線性dp

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