洛谷 U266184 宠物小精灵之收服
最新推荐文章于 2024-12-12 16:48:46 发布

skyang. 于 2023-01-12 21:57:28 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
题目链接:宠物小精灵之收服 - 洛谷
标签:dp、背包问题
思路:
精灵球个数 与 对皮卡丘的伤害 都可以看成背包问题中的体积,所以将dp数组升级为二维
dp[i][j]表示 i个精灵球 j滴血皮卡丘 最多可以收服多少小精灵。
得到转移方程 dp[i][j] = max(dp[i-v1][j-v2]+1,dp[i][j])
注意点:洛谷测评所用数据与题目描述不一致,将dp数组开成1005×5005才通过
AC代码:
#include<iostream>
using namespace std;
int dp[1005][5005];
int main()
{
int n,m,num;
cin>>n>>m>>num;
int v1,v2;
for(int i=1;i<=num;++i)
{
cin>>v1>>v2;
for(int j=n;j>=v1;j--)
{
for(int k=m;k>v2;k--)
{
dp[j][k]=max(dp[j][k],dp[j-v1][k-v2]+1);
}
}
}
if(dp[n][m]==0) cout<<"0 "<<m<<endl;
else for(int i=m;i>0;i--)
{
if(dp[n][i]<dp[n][m])
{
cout<<dp[n][m]<<" "<<m-i;
break;
}
}
return 0;
}
相关知识
洛谷 U266184 宠物小精灵之收服
宠物小精灵之收服
Bailian4102 宠物小精灵之收服【模拟】
宠物小精灵之收服(二维背包)
1292:宠物小精灵之收服
【动态规划】宠物小精灵之收服
AcWing 1022 宠物小精灵之收服
C++解决:宠物小精灵之收服【oj】
Acwing.提高课.宠物小精灵之收服(c++题解)
信息学奥赛一本通 1292:宠物小精灵之收服 动态规划
原文链接: 洛谷 U266184 宠物小精灵之收服 https://m.mcbbbk.com/newsview725622.html
| 上一篇: 宠物小精灵实力等级划分? | 下一篇: 宠物小精灵手机版 |



