中國計量大學現代科技學院第四屆“中競杯”程式設計校賽(同步賽) F.爬塔(DP)
題目連結:https://ac.nowcoder.com/acm/contest/9680/F
題目描述:
高川最喜歡的遊戲當屬 Slay the Spire,這是一款爬塔遊戲,你需要從一座塔的底部一直爬到頂部,在爬塔的過程中,塔的每一層都有許多的寶物等你來拿。
高川從塔的左側開始攀爬,從底部爬到頂部,再從右側從頂部逐步下到底部。塔總共有 n 層,每一層都有很多寶物從左到右排列。在左側攀爬時,他只能從每層的最左邊按順序取寶物,在右側下降時,他只能從每層的最右邊按順序取寶物。每個寶物都有一個價值,他最多拿 m 個寶物,他想知道自己從塔上下來時,最多可以拿的寶物價值和是多少。
輸入描述:
第一行輸入兩個正整數 n 和m 。表示塔的層數和最多能選的個數。
接下來 n 行,每行先輸入一個數字 x。表示這一層寶物的個數。接下來輸入 x 個正整數,表示每個寶物的權重 c。1≤n,x,c≤100,1≤m≤10000。
輸入保證可挑選的物品大於等於 m 個。
輸出描述:
輸出一個整數表示高川能拿走的最大價值和。
示例1:
輸入:
2 3
2 3 2
4 1 4 1 5
輸出:
10
解題思路:
因為每一層只能從左往右或者從右往左的順序取寶物,所以可以先計算出每一層寶物價值的字首和與字尾和分別表示從左往右與從右往左取寶物的價值和,接著維護一個ans陣列,ans[i][j]表示第i層取j件寶物所能達到的價值最大值。最後進行DP,dp[i]表示拿取i件寶物所能獲得的最大價值,最終答案為dp[m]。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e2+10;
const int maxm = 1e4+10;
int a[maxn][maxn];
int x[maxn],ans[maxn][maxn];
int pref[maxn][maxn],suf[maxn][maxn];
int dp[maxm];
int main()
{
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&x[i]);
for(int j=1;j<=x[i];j++){
scanf("%d",&a[i][j]);
pref[i][j]=pref[i][j-1]+a[i][j];
}
}
for(int i=1;i<=n;i++)
for(int j=x[i];j>=1;j--)
suf[i][j]=suf[i][j+1]+a[i][j];
for(int i=1;i<=n;i++)
for(int j=0;j<=x[i];j++)
for(int k=0;j+k<=x[i];k++)
ans[i][j+k]=max(ans[i][j+k],pref[i][j]+suf[i][x[i]-k+1]);
for(int i=1;i<=n;i++)
for(int j=m;j>0;j--)
for(int k=x[i];k>0;k--)
if(k<=j)
dp[j]=max(dp[j],dp[j-k]+ans[i][k]);
printf("%d\n",dp[m]);
return 0;
}
相關文章
- 第二十屆西南科技大學ACM程式設計競賽(同步賽)ACM程式設計
- 北京資訊科技大學第十一屆程式設計競賽(重現賽)I程式設計
- 第二屆“重科杯”重慶科技大學程式設計競賽(同步賽)ptlks的題解(2024.5.18)程式設計
- 無錫學院2024年ACM大學生程式設計競賽校選賽 題解ACM程式設計
- 華中農業大學第十三屆程式設計競賽程式設計
- 某大學程式設計競賽程式設計
- 第十七屆中國計量大學程式設計競賽 I- Isolated Pointset程式設計
- QZEZ第一屆“飯吉圓”杯程式設計競賽程式設計
- "華為杯"華南理工大學程式設計競賽(同步賽) H題解 還沒寫程式設計
- 華中農業大學第十三屆程式設計競賽 題解程式設計
- 山東省第四屆ACM大學生程式設計競賽-Rescue The Princess(計算幾何)ACM程式設計
- 第十五屆浙江大學寧波理工學院程式設計大賽(同步賽)程式設計
- 2012年"浪潮杯"山東省第三屆ACM大學生程式設計競賽(熱身賽)ACM程式設計
- 第 10 屆 CCPC 中國大學生程式設計競賽濟南站 遊記程式設計
- “九韶杯”河科院程式設計協會第一屆程式設計競賽題目分析以及總結程式設計
- 山東省第四屆ACM大學生程式設計競賽-Contest Print Server(模擬)ACM程式設計Server
- 以賽促學 以賽促練|綠盟科技助力吉林大學“綠盟”杯第三屆大學生網路安全競賽圓滿收官
- 第15屆浙江省大學生程式設計競賽D題程式設計
- [補題] 第 45 屆國際大學生程式設計競賽(ICPC)亞洲區域賽(上海)程式設計
- 紹興市大學生程式設計競賽程式設計
- 2020年“感恩杯”台州學院第十三屆大學生程式設計競賽D、H、I題解(後續補充)程式設計
- 資料競賽:第四屆工業大資料競賽-虛擬測量大資料
- 第八屆山東省ACM大學生程式設計競賽總結ACM程式設計
- 山東省第七屆ACM大學生程式設計競賽-Reversed WordsACM程式設計
- M-災難預警-浙江農林大學第十九屆程式設計競賽暨天梯賽選拔賽程式設計
- “位元組跳動杯”2018中國大學生程式設計競賽-女生專場程式設計
- 牛客競賽,GDDU第十屆文遠知行杯新生程式設計競賽,摸魚記(BDEIKL題解,補G,ACFHJ)程式設計
- 湖南省大學生程式設計競賽系統設計程式設計
- 山東省第一屆ACM大學生程式設計競賽-Balloons(搜尋)ACM程式設計
- 山東省第四屆ACM大學生程式設計競賽-Alice and Bob(二進位制&&找規律)ACM程式設計
- 2014年北京師範大學新生程式設計競賽網路賽程式設計
- 第十屆山東省大學生程式設計競賽題解(A、F、M、C)程式設計
- 2014第六屆華為程式設計大賽初賽第四輪程式設計
- 程式設計競賽中讀檔案技能程式設計
- 第十屆中國大學生程式設計競賽 重慶站(CCPC 2024 Chongqing Site)程式設計
- 2024年西安交通大學程式設計校賽程式設計
- 山東省第六屆ACM大學生程式設計競賽-Square Number(完全平方數)ACM程式設計
- 山東省第六屆ACM大學生程式設計競賽-Lowest Unique Price(桶排序)ACM程式設計排序