日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【NOIP2010】【P1317】乌龟棋

發布時間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NOIP2010】【P1317】乌龟棋 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

似乎很像搜索的DP(應該也可以用搜索寫)

原題:

小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。
烏龜棋的棋盤是一行N 個格子,每個格子上一個分數(非負整數)。棋盤第1格是唯一的起點,第N 格是終點,游戲要求玩家控制一個烏龜棋子從起點出發走到終點。

烏龜棋中M 張爬行卡片,分成4 種不同的類型(M 張卡片中不一定包含所有4 種類型的卡片,見樣例),每種類型的卡片上分別標有1、2、3、4 四個數字之一,表示使用這種卡片后,烏龜棋子將向前爬行相應的格子數。游戲中,玩家每次需要從所有的爬行卡片中選擇一張之前沒有使用過的爬行卡片,控制烏龜棋子前進相應的格子數,每張卡片只能使用一次。
游戲中,烏龜棋子自動獲得起點格子的分數,并且在后續的爬行中每到達一個格子,就得到該格子相應的分數。玩家最終游戲得分就是烏龜棋子從起點到終點過程中到過的所有格子的分數總和。
很明顯,用不同的爬行卡片使用順序會使得最終游戲的得分不同,小明想要找到一種卡片使用順序使得最終游戲得分最多。
現在,告訴你棋盤上每個格子的分數和所有的爬行卡片,你能告訴小明,他最多能得到多少分嗎?

對于100%的數據有1 ≤ N≤ 350,1 ≤M≤ 120,且4 種爬行卡片,每種卡片的張數不會
超過40;0 ≤ ai ≤ 100,1 ≤ i ≤ N;1 ≤ bi ≤ 4,1 ≤ i ≤M。

?

剛開始還以為是背包,不過這題不能用背包解決,因為背包中物品的價值是固定的,放入順序對總價值沒有影響,但是這里如果把卡片看成物品的話這個物品的價值會根據前面卡片使用順序改變,所以不能用背包

思路就是開一個四維的f,四重循環枚舉當前每種卡片用了多少,然后從上一層轉移過來最大值,最后加上a(i+j*2+p*3+q*4+1)即可

應該也可以用搜索解決,不過就算搜索本質還是DP,只不過上面用for是根據前面已經得到的結果的優化現在的,搜索是根據現在的值優化以后的,兩種寫法代碼復雜度和時間復雜度應該都差不多

代碼:

1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 using namespace std; 7 int f[50][50][50][50]; 8 int n,m,a[1100],num[5]; 9 int main(){//freopen("ddd.in","r",stdin); 10 cin>>n>>m; 11 for(int i=1;i<=n;i++) cin>>a[i]; 12 int _id; 13 for(int i=1;i<=m;i++){ cin>>_id; num[_id]++;} 14 for(int i=1;i<=num[1]+1;i++) 15 for(int j=1;j<=num[2]+1;j++) 16 for(int p=1;p<=num[3]+1;p++) 17 for(int q=1;q<=num[4]+1;q++){ 18 f[i][j][p][q]=max(f[i][j][p][q],f[i-1][j][p][q]); 19 f[i][j][p][q]=max(f[i][j][p][q],f[i][j-1][p][q]); 20 f[i][j][p][q]=max(f[i][j][p][q],f[i][j][p-1][q]); 21 f[i][j][p][q]=max(f[i][j][p][q],f[i][j][p][q-1]); 22 f[i][j][p][q]+=a[i-1+(j-1)*2+(p-1)*3+(q-1)*4+1]; 23 } 24 cout<<f[num[1]+1][num[2]+1][num[3]+1][num[4]+1]<<endl; 25 return 0; 26 } View Code

?

轉載于:https://www.cnblogs.com/JSL2018/p/5876406.html

總結

以上是生活随笔為你收集整理的【NOIP2010】【P1317】乌龟棋的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。