中國計量大學現代科技學院第四屆“中競杯”程式設計校賽(同步賽) 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;
}
相關文章
- 第十七屆中國計量大學程式設計競賽 I- Isolated Pointset程式設計
- 第二十屆西南科技大學ACM程式設計競賽(同步賽)ACM程式設計
- 第二屆“重科杯”重慶科技大學程式設計競賽(同步賽)ptlks的題解(2024.5.18)程式設計
- 第十五屆浙江大學寧波理工學院程式設計大賽(同步賽)程式設計
- 無錫學院2024年ACM大學生程式設計競賽校選賽 題解ACM程式設計
- 北京資訊科技大學第十一屆程式設計競賽(重現賽)I程式設計
- 華中農業大學第十三屆程式設計競賽程式設計
- 第 10 屆 CCPC 中國大學生程式設計競賽濟南站 遊記程式設計
- “位元組跳動杯”2018中國大學生程式設計競賽-女生專場程式設計
- QZEZ第一屆“飯吉圓”杯程式設計競賽程式設計
- 華中農業大學第十三屆程式設計競賽 題解程式設計
- 第十屆中國大學生程式設計競賽 重慶站(CCPC 2024 Chongqing Site)程式設計
- "華為杯"華南理工大學程式設計競賽(同步賽) H題解 還沒寫程式設計
- “九韶杯”河科院程式設計協會第一屆程式設計競賽題目分析以及總結程式設計
- 2020年“感恩杯”台州學院第十三屆大學生程式設計競賽D、H、I題解(後續補充)程式設計
- [補題] 第 45 屆國際大學生程式設計競賽(ICPC)亞洲區域賽(上海)程式設計
- [題解][2021-2022年度國際大學生程式設計競賽第10屆陝西省程式設計競賽] Type The Strings程式設計
- 【比賽覆盤】2024第七屆“傳智杯”全國大學生計算機大賽程式設計挑戰賽(初賽第一場)計算機程式設計
- 第15屆浙江省大學生程式設計競賽D題程式設計
- 程式設計競賽中讀檔案技能程式設計
- 紹興市大學生程式設計競賽程式設計
- 2024年西安交通大學程式設計校賽程式設計
- 中國大學生數學競賽(非數學專業類)競賽大綱
- 2023年中國高校計算機大賽-團隊程式設計天梯賽(GPLT)上海理工大學校內選拔賽 (vp + 補題)計算機程式設計
- 牛客競賽,GDDU第十屆文遠知行杯新生程式設計競賽,摸魚記(BDEIKL題解,補G,ACFHJ)程式設計
- M-災難預警-浙江農林大學第十九屆程式設計競賽暨天梯賽選拔賽程式設計
- 2020“數維杯”國際大學生數學建模競賽賽題分析
- 2024國慶鋁紫程式設計競賽程式設計
- 西安理工大學2024年程式設計校賽程式設計
- 第十屆山東省大學生程式設計競賽題解(A、F、M、C)程式設計
- 第43屆ACM-ICPC國際大學生程式設計競賽 亞洲區域賽南京站現場賽名額分配相關說明ACM程式設計
- 以賽促學 以賽促練|綠盟科技助力吉林大學“綠盟”杯第三屆大學生網路安全競賽圓滿收官
- 2020年廣東工業大學第十屆文遠知行杯新生程式設計競賽 A.肥豬的鋼琴床(dp動態規劃)程式設計動態規劃
- 第九屆中國大學生程式設計競賽 深圳站(CCPC 2023 Shenzhen Site)/ The 2nd Universal Cup. Stage 25: Shenzhen程式設計
- 程式設計競賽中 C/C++ I/O 的使用程式設計C++
- 2017中國大學生程式設計競賽 - 女生專場(SDKD 2024 Summer Training Contest K2)程式設計AI
- 2024“釘耙程式設計”中國大學生演算法設計超級聯賽(6)程式設計演算法
- 2024“釘耙程式設計”中國大學生演算法設計超級聯賽(3)程式設計演算法