[vijos1426]兴奋剂检查(多维背包)
来源:互联网 发布:自动上色软件 编辑:程序博客网 时间:2024/05/16 17:02
题目:
我是超链接
题解:
来做一些很水的背包?
多重背包?好多维的状态呢,这个东西很大啊f数组存不下怎么办?
给每种不同的包的组合编一个唯一的号即可,每一种方案对应cc[i]中的一个数字,类似于hash的思想
代码:
#include <cstdio>#include <iostream>using namespace std;int cc[10],v[10],dp[5000005],ans=0;int hash1(int a,int b,int c,int d,int e){ return a*(cc[2]+1)*(cc[3]+1)*(cc[4]+1)*(cc[5]+1)+b*(cc[3]+1)*(cc[4]+1)*(cc[5]+1)+c*(cc[4]+1)*(cc[5]+1)+d*(cc[5]+1)+e;}int main(){ int n,m,i,j,a,b,c,d,e; scanf("%d%d",&n,&m); for (i=1;i<=m;i++) scanf("%d",&cc[i]); for (i=1;i<=n;i++) { int x; scanf("%d",&x); for (j=1;j<=m;j++) scanf("%d",&v[j]); for (a=cc[1];a>=v[1];a--) for (b=cc[2];b>=v[2];b--) for (c=cc[3];c>=v[3];c--) for (d=cc[4];d>=v[4];d--) for (e=cc[5];e>=v[5];e--) { int p=hash1(a,b,c,d,e),q=hash1(a-v[1],b-v[2],c-v[3],d-v[4],e-v[5]); dp[p]=max(dp[p],dp[q]+x); ans=max(ans,dp[p]); } } printf("%d",ans); }
阅读全文
0 0
- [vijos1426]兴奋剂检查(多维背包)
- vijos1426兴奋剂检查(多维费用的背包问题+状态压缩+hash)
- [vijos1426] 兴奋剂检查
- vijos1426 兴奋剂检查
- hash——vijos1426 兴奋剂检查
- 兴奋剂检查(Vijos-1426)
- vijos1426(状态压缩背包dp)
- hdu4501(多维背包)
- Medicine (01多维背包)
- ProjectEuler 201,多维背包
- DP 多维背包
- hlg2146【多维背包】
- hdu 4501 多维背包
- [jzoj]1501. 糖果(优化多维背包的多种方法)
- hdu 4501 多维背包模版
- hdu 4501 多维01背包
- hdu 4501多维背包入门
- HDU ACM 4501 小明系列故事——买年货->多维背包(多为01背包)
- Angular表单边框样式
- Angular4.0 动画
- 前端html与css学习笔记总结篇(超详细)
- 个人项目-一之(MVP+RxJava2+Retrofit2+RxBus+Glide)
- SylixOS之TFTP使用
- [vijos1426]兴奋剂检查(多维背包)
- MOSFET开时米勒平台的形成过程的详细解析!
- 2018届秋季校招Java面试题总结(一)
- 常用输入框的测试用例汇总
- 3dmax中如何导入照片为背景
- 让vim显示空格,及tab字符 vim 多行注释(转)
- getServletContext和getServletConfig的getInitParameter方法区别
- 领英全球副总裁:如何做到 5 亿用户增长的 ?
- 移动端开发(一):解决body体中设置overflow:hidden;屏幕仍然会出现滚动条问题