显然一定尽量用大的包,不妨把包排序

然后考虑状压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相关推荐

  1. [PA2014]Pakowanie

    [PA2014]Pakowanie 题目大意: \(n(n\le24)\)个物品和\(m(m\le100)\)个背包,每个物体有一个体积\(a_i\),每个背包有一个容量\(c_i\).问装完所有物品 ...

  2. 【PA2014】【BZOJ3717】Pakowanie

    Description 你有n个物品和m个包.物品有重量,且不可被分割:包也有各自的容量.要把所有物品装入包中,至少需要几个包? Input 第一行两个整数n,m(1<=n<=24,1&l ...

  3. 省选之前的未完成的计划(截至到省选)

    PLAN OF THE COMING HEOI good problems: -bzoj4823:[Cqoi2017]老C的方块 [*] -bzoj3171:[Tjoi2013]循环格 [*] -bz ...

  4. 一句话题解(20180210~)

    2.9 BZOJ 2006 [NOI2010]超级钢琴.这道题目几天之前就做了.做法是固定右端点,左端点在ST表上走,走法其实就是笛卡尔树的走法.完结撒花! BZOJ 1218 [HNOI2003]激 ...

  5. BZOJ3709: [PA2014]Bohater

    BZOJ3709: [PA2014]Bohater Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号). 为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药 ...

  6. bzoj 3714: [PA2014]Kuglarz

    3714: [PA2014]Kuglarz Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 1151  Solved: 611 [Submit][St ...

  7. bzoj 3709: [PA2014]Bohater

    3709: [PA2014]Bohater 链接 http://www.lydsy.com/JudgeOnline/problem.php?id=3709 题面 在一款电脑游戏中,你需要打败n只怪物( ...

  8. [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] ...

  9. bzoj3714【PA2014】Kuglarz

    3714: [PA2014]Kuglarz Time Limit: 20 Sec   Memory Limit: 128 MB Submit: 361   Solved: 219 [ Submit][ ...

  10. bzoj3714:[PA2014]Kuglarz

    Pre 神一样的\(MST\) Solution 考虑计算出(或者直接得出)\(sum[i]\)和\(sum[i-1]\)来得出其情况. 转化为得到每一个前缀和(奇或者偶)的值. 对于一个询问\(i\ ...

最新文章

  1. github登陆方案
  2. 集员法对3D激光雷达和相机的外部校准
  3. 【转】在Java中连接字符串时是使用+号还是使用StringBuilder StringBuffer 加号
  4. Java并发编程-volatile
  5. 通信 / HTTP Host 请求头的作用
  6. sql 倒数第二个_小白初探SQL(一)
  7. netbeans插件_如何编写NetBeans插件
  8. linux自动化测试脚本,linux iperf3 一键自动化测试脚本
  9. 谈谈Web Workers
  10. Intellij IDEA 中的 Debug 控制台输出窗口消失
  11. 微信小程序开发的坑---tabBar
  12. Atitit  信息管理 艾提拉著作 CAPT1信息源数据源 目录 1. 数据元的数据格式 图片 文本 视频 音频 2 2. 按照应用功能使用分类 2 2.1. Diary Cyarlog 2
  13. 大学四年总结与感悟及给刚上大学的同学的一些建议
  14. 计算机毕业设计springboot+vue基本微信小程序的考试系统
  15. 数字经济时代,企业的核心竞争力究竟是什么?
  16. 算法与数据结构(邓俊辉)第一章
  17. 拍好人像的六个好招数
  18. 香港汇丰银行个人开户资料及流程
  19. Windows PowerShell学习笔记(一)
  20. 台式计算机 启用时间,关于台式电脑启动时间

热门文章

  1. 河北化工医药职业技术学院学计算机怎么样,河北化工医药职业技术学院宿舍条件怎么样 男生女生宿舍图片...
  2. C语言数据结构与算法-------查找(二)哈希法
  3. kotlin学习---Field
  4. 【技术贴】删除空白文件夹,提示无法读源文件或磁盘的解决方法
  5. linux 笔记本摄像头,Ubuntu 7.10 下屏蔽笔记本摄像头的方法
  6. 微分算子法解微分方程
  7. ftp服务器文件不让上传,ftp服务器不让上传文件
  8. 怎么同时给多个 Word 文档批量添加自定义的文字和图片水印
  9. 亚马逊AWSome DAY
  10. 可以去视频水印的软件 抖音的玩法和技巧图解