CodeVS 1068-乌龟棋
原題
題目描述?Description
? ? ? ?小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。 烏龜棋的棋盤是一行N個格子,每個格子上一個分數(非負整數)。棋盤第1格是唯一 的起點,第N格是終點,游戲要求玩家控制一個烏龜棋子從起點出發走到終點。
…… 1 2 3 4 5 ……N 烏龜棋中M張爬行卡片,分成4種不同的類型(M張卡片中不一定包含所有4種類型 的卡片,見樣例),每種類型的卡片上分別標有1、2、3、4四個數字之一,表示使用這種卡 片后,烏龜棋子將向前爬行相應的格子數。游戲中,玩家每次需要從所有的爬行卡片中選擇 一張之前沒有使用過的爬行卡片,控制烏龜棋子前進相應的格子數,每張卡片只能使用一次。 游戲中,烏龜棋子自動獲得起點格子的分數,并且在后續的爬行中每到達一個格子,就得到 該格子相應的分數。玩家最終游戲得分就是烏龜棋子從起點到終點過程中到過的所有格子的 分數總和。 很明顯,用不同的爬行卡片使用順序會使得最終游戲的得分不同,小明想要找到一種卡 片使用順序使得最終游戲得分最多。 現在,告訴你棋盤上每個格子的分數和所有的爬行卡片,你能告訴小明,他最多能得到 多少分嗎?
輸入描述?Input Description
輸入的每行中兩個數之間用一個空格隔開。
第1行2個正整數N和M,分別表示棋盤格子數和爬行卡片數。
第2行N個非負整數,a1a2……aN,其中ai表示棋盤第i個格子上的分數。
第3行M個整數,b1b2……bM,表示M張爬行卡片上的數字。 輸入數據保證到達終點時剛好用光M張爬行卡片,即N - 1=∑(1->M) bi。
輸出描述?Output Description
輸出一行一個整數
樣例輸入?Sample Input
13?8
4?96?10?64?55?13?94?53?5?24?89?8?30
1?1?1?1?1?2?4?1
樣例輸出?Sample Output
455
數據范圍及提示?Data Size & Hint
對于30%的數據有1?≤?N≤?30,1?≤M≤?12。
對于50%的數據有1?≤?N≤?120,1?≤M≤?50,且4?種爬行卡片,每種卡片的張數不會超過20。
對于100%的數據有1?≤?N≤?350,1?≤M≤?120,且4?種爬行卡片,每種卡片的張數不會超過40;
0?≤?ai?≤?100,1?≤?i?≤?N;1?≤?bi?≤?4,1?≤?i?≤M。輸入數據保證N - 1=∑(1->M) bi
?
題意
求將m張卡片按一定順序排列后所能走出的最大分數。
題解
又是DP。。。
由于只有4種卡片,我們就要先定一個數組c儲存每種卡片的個數,再用一個4維數組f儲存最大值。Fi,j,k,l表示用i張卡片1,j張卡片2,k張卡片3,l張卡片4所能走出的最大分數總和,i,j,k,l的最小值都為0(即在起點的時候),最大值分別為c[1],c[2],c[3],c[4]。
于是代碼:
?
1 uses math; 2 var a:array[0..350] of longint; 3 var c:array[1..4] of integer;//儲存卡片數 4 var n,m,i,j,k,l,x,b:longint; 5 var f:array[-1..40,-1..40,-1..40,-1..40] of longint;//注意數組下界 6 begin 7 readln(n,m); 8 for i:=1 to n do read(a[i]); 9 for i:=1 to m do 10 begin 11 read(b); 12 inc(c[b]); 13 end; 14 for i:=0 to c[1] do 15 for j:=0 to c[2] do 16 for k:=0 to c[3] do 17 for l:=0 to c[4] do 18 begin 19 x:=i+j*2+k*3+l*4+1;//想想為什么要+1 20 f[i,j,k,l]:=max(max(max(f[i-1,j,k,l],f[i,j-1,k,l]),f[i,j,k-1,l]),f[i,j,k,l-1]);//求(取1前,取2前,取3前,取4前)4種情況的最大值 21 f[i,j,k,l]:=f[i,j,k,l]+a[x];//加上本身 22 end; 23 writeln(f[c[1],c[2],c[3],c[4]]);//輸出全部卡片用完的最優解 24 end. 25 26 CodeVS 1068-烏龜棋 CodeVS 1068-烏龜棋?
?
?
?
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
轉載于:https://www.cnblogs.com/HAdolf-HQY/p/6336773.html
總結
以上是生活随笔為你收集整理的CodeVS 1068-乌龟棋的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj3638
- 下一篇: WSDL4J解析WSDL文件方法