題目:
有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 ...