https://codeforces.com/contest/1132/problem/E

题意

有8种物品,重量是1~8,每种数量是\(cnt[i]\)(1e16),问容量为W(1e18)的背包最多能装多少重量

题解1

  • 多重背包二进制拆分物品转换成01背包,用map来剪枝掉无用的状态
#include<bits/stdc++.h>
#define ll long long
using namespace std;
map<ll,bool>f,g;
ll a[10],W,s[1005],ans;
vector<ll>w; int main(){
cin>>W;
for(ll i=1;i<=8;i++){
cin>>a[i];
if(a[i]){
ans=max(ans,min(W/i,a[i])*i);
ll num=1;
while(a[i]>0){
w.push_back(min(num,a[i])*i);
a[i]-=min(num,a[i]);
num*=2;
}
}
}
sort(w.begin(),w.end());
reverse(w.begin(),w.end());
for(int i=w.size()-1;i>=0;i--)s[i]=s[i+1]+w[i];
f[0]=true;
for(int i=0;i<w.size();i++){
g.clear();
for(map<ll,bool>::iterator it=f.begin();it!=f.end();it++){
ll x=it->first;
g[x]=true;
if(x+w[i]<=W)g[x+w[i]]=true;
}
f.clear();
for(map<ll,bool>::iterator it=g.begin();it!=g.end();it++){
ll x=it->first;
if(x+s[i]<ans)continue;
f[x]=true;
ans=max(ans,x);
}
}
cout<<ans;
}

题解2

参考:https://blog.csdn.net/qq_37451344/article/details/88860699

  • 设1到8的最小公倍数为lcm,则将lcm/V[i]看成一整份,然后枚举0到lcm/V[i]作为第二维
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll lcm=840;
ll W,a[10],V[10],dp[10][10005],ans;
int main(){
cin>>W;
for(int i=0;i<8;i++){
cin>>a[i];
V[i]=i+1;
}
memset(dp,-1,sizeof(dp));
dp[0][0]=0;
for(int i=0;i<8;i++){
ll num=lcm/V[i];
ll end=min(num,a[i]);
for(int j=0;j<=lcm*8;j++){
if(dp[i][j]<0)continue;
for(int k=0;k<=end;k++){
if(j+k*V[i]<=lcm*8)dp[i+1][j+k*V[i]]=max(dp[i+1][j+k*V[i]],
dp[i][j]+(a[i]-k)/num);
}
}
}
for(int i=0;i<=lcm*8;i++){
if(i>W)break;
if(dp[8][i]<0)continue;
ans=max(ans,i+lcm*min(dp[8][i],(W-i)/lcm));
}
cout<<ans;
}

最新文章

  1. 移动端H5-第一课css篇
  2. DBHelper
  3. Android之图片颜色调节
  4. 韦东山yy公开课笔记(1)--各种杂的问题
  5. 一条sql语句循环插入N条不同记录(转)
  6. 使用公用表表达式(CTE)
  7. url路径
  8. QT5 &amp;&amp; VS2013配置
  9. 10分钟学会JAVA注解(annotation)
  10. SqlDataReader 之指定转换无效
  11. 【JavaScript运算符与表达式】
  12. Linux下使用ps命令查看某个进程文件的启动位置
  13. 20175310 《Java程序设计》第7周学习总结
  14. 【iCore4 双核心板_FPGA】例程五:基础逻辑门实验——逻辑门使用
  15. SQLServer中DataLength()和Len()两内置函数的区别(转载)
  16. if 语句练习 身高体重问题
  17. 环境搭建之JAVA项目部署步骤
  18. 诸神眷顾的幻想乡(zjoi2015,bzoj3926)(广义后缀自动机)
  19. authentication not supported Connect to TFS Git from Xamarin Studio (non-hosted, locally installed TFS 2013)
  20. HDU 6203 ping ping ping [LCA,贪心,DFS序,BIT(树状数组)]

热门文章

  1. torch_11_风格迁移和cycleGAN
  2. 【shell脚本】将三个数字进行升序排序===numSort.sh
  3. VMware 中安装kvm虚拟机
  4. 一个JAVA应用启动缓慢问题排查 --来自jdk securerandom 的问候
  5. dubbo入门学习
  6. 使用xkbeancomparator对比javabean,生成操作记录
  7. 第一章 权限管理DEMO简介
  8. Java性能 -- 线程上下文切换
  9. html跳转,获取get提交参数
  10. 3 测试使用和LogCat日志