陵水黎族自治县网站建设_网站建设公司_在线商城_seo优化
2025/12/23 19:13:43 网站建设 项目流程

题目大意

洛谷 P1855 榨取kkksc03

多维背包模板题。

给定 \(n\) 个愿望,第 \(i\) 个愿望所需金钱为 \(m_i\),所需时间为 \(t_i\)。现在 kkksc03 有 \(M\) 块钱,暑假时间为 \(T\),问在暑假期间他最多能满足多少个愿望。

思路分析

由于其除了增加一维外,其余底层逻辑为 0-1 背包类似,所以可以在 0-1 背包的基础上修改。

0-1 背包状态转移方程,其中 \(v_i\) 为体积,\(w_i\) 为价值。

\[dp_j=\max(dp_j,dp_{j-v_i}+w_i) \]

多维背包状态转移方程,其中把物品数量 \(1\) 作为价值。

\[dp_{j\color{red}{,k}}=\max(dp_{j\color{red}{,k}},dp_{j\color{red}{-m_i,k-t_i}}{\color{red}{+1}}) \]

代码呈现

#include<bits/stdc++.h>
using namespace std;const int N=105,maxM=205;
int n,M,T;
int m[N],t[N],dp[maxM][maxM];int main(){scanf("%d%d%d",&n,&M,&T);for (int i=1;i<=n;++i) scanf("%d%d",m+i,t+i);for (int i=1;i<=n;++i){for (int j=M;j>=m[i];--j){for (int k=T;k>=t[i];--k) dp[j][k]=max(dp[j][k],dp[j-m[i]][k-t[i]]+1);}}printf("%d",dp[M][T]);return 0;
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询