首页 > 分享 > 4978:宠物小精灵之收服(0

4978:宠物小精灵之收服(0

最新推荐文章于 2024-11-08 19:56:20 发布

Selvaggia 于 2022-01-21 13:33:37 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

4978:宠物小精灵之收服
题目
三维代码,4分wa,看个思路再接着滚动数组

1、// sort(a+1,a+n+1);不用排序,递推过程中就在不断比较哪种取法能收复最多精灵
2、体力值可以对m取等号

using namespace std; struct node{int ball;int energy;bool operator<(const node n)const{if(ball==n.ball)return energy<n.energy;return ball<n.ball;} }a[105]; 123456789

#include <bits/stdc++.h> using namespace std; struct node{int ball;int energy;bool operator<(const node n)const{if(ball==n.ball)return energy<n.energy;return ball<n.ball;} }a[105]; int dp[105][505][1005]; //dp[i][j][h]前对于i个精灵 允许消耗j体力 h个精灵球能收服的精灵数 //求dp[k][m-1][n];要给皮卡丘留一个体力 好叭用不着 int main(){ios::sync_with_stdio(false);cin.tie(0);int n,m,k;//精灵球数量,皮卡丘体力,精灵数量cin>>n>>m>>k;for(int i=1;i<=k;i++){cin>>a[i].ball>>a[i].energy; } // sort(a+1,a+n+1);for(int i=1;i<=k;i++){for(int j=m;j>=1;j--){for(int h=n;h>=1;h--){if((j>=a[i].energy)&&(h>=a[i].ball)){ dp[i][j][h]=max(dp[i-1][j-a[i].energy][h-a[i].ball]+1,dp[i-1][j][h]);}else dp[i][j][h]=dp[i-1][j][h];}}}cout<<dp[k][m][n]<<" ";int minn=0x3f3f3f; //for(int i=1;i<=k;i++){ //for(int j=1;j<=m;j++){ //for(int h=1;h<=n;h++){ //if(dp[i][j][h]==dp[k][m][n])minn=(min(minn,j)); //} //} //}int i;for(i=1;i<=m;i++){if(dp[k][i][n]==dp[k][m][n])break;}minn=i;cout<<m-minn; //dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]); return 0; }

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051

二维代码

#include <bits/stdc++.h> using namespace std; struct node{int ball;int energy;bool operator<(const node n)const{if(ball==n.ball)return energy<n.energy;return ball<n.ball;} }a[105]; int dp[505][1005]; int main(){ios::sync_with_stdio(false);cin.tie(0);int n,m,k;//精灵球数量,皮卡丘体力,精灵数量cin>>n>>m>>k;for(int i=1;i<=k;i++){cin>>a[i].ball>>a[i].energy; } // sort(a+1,a+n+1);for(int i=1;i<=k;i++){for(int j=m;j>=a[i].energy;j--){for(int h=n;h>=a[i].ball;h--){ //if(j>=a[i].energy&&h>=a[i].ball){ dp[j][h]=max(dp[j-a[i].energy][h-a[i].ball]+1,dp[j][h]); //} //else dp[j][h]=dp[j][h];}}}cout<<dp[m][n]<<" ";int minn=0x3f3f3f;for(int h=0;h<=n;h++){for(int j=0;j<=m;j++){if(dp[j][h]==dp[m][n])minn=(min(minn,j));}} //int i;至多要n个精灵球,至多要m个体力,要达到收服同样精灵的效果 //可能不需要m体力,可能会剩1 2 3…个?从小往大假设,第一次达到同样效果 //的就是实际消耗的体力,剩下的不能再支持收复下一个了,而精灵球给予充分保证 //for(i=1;i<=m;i++){ //if(dp[i][n]==dp[m][n])break; //} //minn=i;cout<<m-minn; //dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]); return 0; }

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950

int i;至多要n个精灵球,至多要m个体力,要达到收服同样精灵的效果可能不需要m体力,可能会剩1 2 3…个?从小往大假设,第一次达到同样效果的就是实际消耗的体力,剩下的不能再支持收复下一个了,而精灵球给予充分保证
for(i=1;i<=m;i++){
if(dp[i][n]==dp[m][n])break;
}
minn=i;

相关知识

宠物小精灵之收服(DP,二维背包问题)
(动态规划)4978:宠物小精灵之收服
openjudge 精灵小宠物之收服
NOI 4978:宠物小精灵之收服(DP 01背包 两约束条件)
宠物小精灵之收服
Bailian4102 宠物小精灵之收服【模拟】
T1292:宠物小精灵之收服
贤鱼的刷题日常【c++动态规划】4978:宠物小精灵之收服
[Acwing1022]宠物小精灵之收服
宠物小精灵之收服(二维背包)

网址: 4978:宠物小精灵之收服(0 https://m.mcbbbk.com/newsview758378.html

所属分类:萌宠日常
上一篇: 宠物小精灵世界之旅最终整合版下载
下一篇: 可爱 QAQ