练习三 T
2016-05-31 21:18
281 查看
题意:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。
思路:把多重背包转化为简单的01背包处理,减少复杂程度。
感想:简单多重背包,没啥好说的。。。
代码:
[cpp] view
plain copy
print?
<span style="font-size:14px;color:#996633;">#include<iostream>
#include<string>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[100100],w[100100],num[10010],val[10010];
<
4000
span style="margin:0px;padding:0px;border:none;color:#000000;background-color:inherit;">int main()
{
int i,j,k,n,m;
while(cin>>n>>m&&n+m)
{
for(i=0;i<n;i++)
cin>>w[i];
for(i=0;i<n;i++)
cin>>num[i];
k=0;
for(i=0;i<n;i++)
{
j=1;
while(j<=num[i])
{
num[i]-=j;
val[k++]=j*w[i];
j*=2;
}
if(num[i])
val[k++]=num[i]*w[i];
}
memset(dp,0,sizeof(dp));
dp[0]=1;
for(i=0;i<k;i++)
for(j=m;j>=val[i];j--)
if(dp[j-val[i]])
dp[j]=1;
int ans=0;
for(i=1;i<=m;i++)
if(dp[i])
ans++;
printf("%d\n",ans);
}
return 0;
}</span>
思路:把多重背包转化为简单的01背包处理,减少复杂程度。
感想:简单多重背包,没啥好说的。。。
代码:
[cpp] view
plain copy
print?
<span style="font-size:14px;color:#996633;">#include<iostream>
#include<string>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[100100],w[100100],num[10010],val[10010];
<
4000
span style="margin:0px;padding:0px;border:none;color:#000000;background-color:inherit;">int main()
{
int i,j,k,n,m;
while(cin>>n>>m&&n+m)
{
for(i=0;i<n;i++)
cin>>w[i];
for(i=0;i<n;i++)
cin>>num[i];
k=0;
for(i=0;i<n;i++)
{
j=1;
while(j<=num[i])
{
num[i]-=j;
val[k++]=j*w[i];
j*=2;
}
if(num[i])
val[k++]=num[i]*w[i];
}
memset(dp,0,sizeof(dp));
dp[0]=1;
for(i=0;i<k;i++)
for(j=m;j>=val[i];j--)
if(dp[j-val[i]])
dp[j]=1;
int ans=0;
for(i=1;i<=m;i++)
if(dp[i])
ans++;
printf("%d\n",ans);
}
return 0;
}</span>
相关文章推荐
- hihoCoder太阁最新面经算法竞赛2
- Hadoop数据传输工具:Sqoop
- AndroidStudio关联android Source方法
- Linux进程间通信——使用共享内存
- PL/SQL中的自定义函数
- 第4代乐视超级电视全系亮相,生态电视“王炸”来了
- Chrome+浏览器下载链接
- 浏览器的模式
- Pythonn new-style class and old-style class
- kafka+zookeeper环境配置
- 贪心法——部分背包问题
- PHP三种运行方式mod_php5/cgi/fast-cgi
- TCP定时器介绍
- 简谈俩种不同方式对vector容器的 自定义结构体进行排序
- Mac系统开发常见问题-80端口被占用的解决方案2-使用Nginx解决
- K-近邻算法
- 多线程信号量的使用
- pitch yaw roll是什么
- 联合训练图论场
- Linux 系列(六)——Nginx实现多虚拟主机配置