AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 其它
    • 题解
    • 分享
    • 商店
    • 问答
  • 吐槽
  • 登录/注册

AcWing 1022. 宠物小精灵之收服    原题链接    简单

作者: 作者的头像   Will_15 ,  2023-01-25 21:25:50 ,  所有人可见 ,  阅读 15


0


//main:输入V1,V2,n,输入商品,从大到小遍历二维容积,记得V2不能为0,最大值,从大到小遍历得到最小消耗,输出减去的值
//有两个容量怎么办:和一个容量一样处理
//转换为01背包问题最关键的是 如果设置体积和价值,以及结果是什么属性

include[HTML_REMOVED]

using namespace std;
const int N=1010,M=510;
int V1,V2,n;
int f[N][M];
int main()
{
cin>>V1>>V2>>n;
for(int i=1;i<=n;i)
{
int v1,v2;
cin>>v1>>v2;
for(int j=V1;j>=v1;j–)//二维体积和一维体积的处理方式一样,因为都是把所有情况的体积遍历一遍
for(int k=V2-1;k>=v2;k–)
f[j][k]=max(f[j][k],f[j-v1][k-v2]+1);//记得知道价值,且加上价值
}
cout<[HTML_REMOVED]0&&f[V1][k-1]==f[V1][V2-1])k–;//这个说明相同的属性都是连在一起的,从大到小最后一个就是最小的
cout<<V2-k<<endl;
/*for(int i=0;i<=V2-1;i
)//从小到大开始遍历找到和最大值一样的且体积消耗最小的
{//因为这里是把所有情况体积的值都计算保存了
//最后一层是在所有商品中选,所有容积下的最大值都得到保存了
if(f[V1][i]==f[V1][V2-1])
{
cout<<V2-i<<endl;
return 0;
}
}*/
return 0;
}
```

0 评论

你确定删除吗?
1024
x

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息