BZOJ3717 [PA2014]Pakowanie
显然一定尽量用大的包,不妨把包排序
然后考虑状压DP,f[i]表示取状态为i的物品,最少要多少个包,g[i]表示取状态为i的物品,用f[i]个包,最后一个包剩多少地方
枚举最后一个加入的物品,判断能不能装进最后一个包里,转移即可
这样复杂度是2^n*n的,过不了
对于每个状态我们只枚举有1的位,把复杂度降到2^(n-1)*n,就能过了
之前我以为这是2^(n+1)的,这时候(半年之后)zgz冲出来裱了我一顿,让我幡然醒悟
大早上的感觉神志不太清醒,大于小于号打反,sort忘加cmp……
#include<iostream>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
#include<iomanip>
#include<cstdlib>
#include<cstdio>
#include<map>
#include<bitset>
#include<set>
#include<stack>
#include<vector>
#include<queue>
using namespace std;
#define MAXN 1010
#define MAXM 16777216
#define ll long long
#define eps 1e-8
#define MOD 1000000007
#define INF 1000000000
int n,m;
int v[MAXN],w[MAXM];
int f[MAXM],g[MAXM];
inline void ud(int x,int F,int G){if(F<f[x]||(F==f[x]&&G>g[x])){f[x]=F;g[x]=G;}
}
bool cmp(int x,int y){return x>y;
}
int main(){int i,j,x;scanf("%d%d",&n,&m);for(i=0;i<n;i++){scanf("%d",&w[i]);}for(i=n-1;~i;i--){w[1<<i]=w[i];}for(i=1;i<=m;i++){scanf("%d",&v[i]);}sort(v+1,v+m+1,cmp);int N=1<<n;for(i=1;i<N;i++){f[i]=m+1;for(j=i;j;j-=x){x=j&-j;if(w[x]<=g[i^x]){ud(i,f[i^x],g[i^x]-w[x]);}else if(w[x]<=v[f[i^x]+1]){ud(i,f[i^x]+1,v[f[i^x]+1]-w[x]);}}}if(f[N-1]<=m){printf("%d\n",f[N-1]);}else{printf("NIE\n");}return 0;
}/*
4 4
6 7 10 9
4 18 2 17 */
BZOJ3717 [PA2014]Pakowanie相关推荐
- [PA2014]Pakowanie
[PA2014]Pakowanie 题目大意: \(n(n\le24)\)个物品和\(m(m\le100)\)个背包,每个物体有一个体积\(a_i\),每个背包有一个容量\(c_i\).问装完所有物品 ...
- 【PA2014】【BZOJ3717】Pakowanie
Description 你有n个物品和m个包.物品有重量,且不可被分割:包也有各自的容量.要把所有物品装入包中,至少需要几个包? Input 第一行两个整数n,m(1<=n<=24,1&l ...
- 省选之前的未完成的计划(截至到省选)
PLAN OF THE COMING HEOI good problems: -bzoj4823:[Cqoi2017]老C的方块 [*] -bzoj3171:[Tjoi2013]循环格 [*] -bz ...
- 一句话题解(20180210~)
2.9 BZOJ 2006 [NOI2010]超级钢琴.这道题目几天之前就做了.做法是固定右端点,左端点在ST表上走,走法其实就是笛卡尔树的走法.完结撒花! BZOJ 1218 [HNOI2003]激 ...
- BZOJ3709: [PA2014]Bohater
BZOJ3709: [PA2014]Bohater Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号). 为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药 ...
- bzoj 3714: [PA2014]Kuglarz
3714: [PA2014]Kuglarz Time Limit: 20 Sec Memory Limit: 128 MB Submit: 1151 Solved: 611 [Submit][St ...
- bzoj 3709: [PA2014]Bohater
3709: [PA2014]Bohater 链接 http://www.lydsy.com/JudgeOnline/problem.php?id=3709 题面 在一款电脑游戏中,你需要打败n只怪物( ...
- [BZOJ]3727: PA2014 Final Zadanie
题解: 我们可以得到 $ b[fa_i]+Sum-2*sz[i]=b[i] $ 然后我们把n-1条边的价值求和起来化简 $ (n-1)*Sum-2*b[1]=\sum_{i=2}^{n}b[i] ...
- bzoj3714【PA2014】Kuglarz
3714: [PA2014]Kuglarz Time Limit: 20 Sec Memory Limit: 128 MB Submit: 361 Solved: 219 [ Submit][ ...
- bzoj3714:[PA2014]Kuglarz
Pre 神一样的\(MST\) Solution 考虑计算出(或者直接得出)\(sum[i]\)和\(sum[i-1]\)来得出其情况. 转化为得到每一个前缀和(奇或者偶)的值. 对于一个询问\(i\ ...
最新文章
- github登陆方案
- 集员法对3D激光雷达和相机的外部校准
- 【转】在Java中连接字符串时是使用+号还是使用StringBuilder StringBuffer 加号
- Java并发编程-volatile
- 通信 / HTTP Host 请求头的作用
- sql 倒数第二个_小白初探SQL(一)
- netbeans插件_如何编写NetBeans插件
- linux自动化测试脚本,linux iperf3 一键自动化测试脚本
- 谈谈Web Workers
- Intellij IDEA 中的 Debug 控制台输出窗口消失
- 微信小程序开发的坑---tabBar
- Atitit 信息管理 艾提拉著作 CAPT1信息源数据源 目录 1. 数据元的数据格式 图片 文本 视频 音频	2 2. 按照应用功能使用分类	2 2.1. Diary Cyarlog	2
- 大学四年总结与感悟及给刚上大学的同学的一些建议
- 计算机毕业设计springboot+vue基本微信小程序的考试系统
- 数字经济时代,企业的核心竞争力究竟是什么?
- 算法与数据结构(邓俊辉)第一章
- 拍好人像的六个好招数
- 香港汇丰银行个人开户资料及流程
- Windows PowerShell学习笔记(一)
- 台式计算机 启用时间,关于台式电脑启动时间
热门文章
- 河北化工医药职业技术学院学计算机怎么样,河北化工医药职业技术学院宿舍条件怎么样 男生女生宿舍图片...
- C语言数据结构与算法-------查找(二)哈希法
- kotlin学习---Field
- 【技术贴】删除空白文件夹,提示无法读源文件或磁盘的解决方法
- linux 笔记本摄像头,Ubuntu 7.10 下屏蔽笔记本摄像头的方法
- 微分算子法解微分方程
- ftp服务器文件不让上传,ftp服务器不让上传文件
- 怎么同时给多个 Word 文档批量添加自定义的文字和图片水印
- 亚马逊AWSome DAY
- 可以去视频水印的软件 抖音的玩法和技巧图解