题面

看起来非常简单,但是细节多的一批的状压DP入门题。

我设 \(f_i\) 为 \(i\) 状态时最小分组数, \(g_i\) 为 \(i\) 状态时最后一组剩余空间。

对于每一个 \(i\) ,枚举每一个 \(1\le j\le n\) 且 \(j\) 不在 \(i\) 内, 即 \(i \& (1<<(j-1))=0\) 。然后分类讨论:

  1. \(j\) 可以放在最后一组中, \(f_{i | (1<< (j-1))}=\operatorname{min}\{f_{i | (1<< (j-1))},f_i\}, g_{i | (1<< (j-1))}=\operatorname{max}\{g_{i | (1<< (j-1))},g_i-a_j\}\) 。
  2. \(j\) 不能放在最后一组中, \(f_{i | (1<< (j-1))}=\operatorname{min}\{f_{i | (1<< (j-1))},f_i+1\}, g_{i | (1<< (j-1))}=\operatorname{max}\{g_{i | (1<< (j-1))},W-a_j\}\) 。

初始状态:\(f_0=1,g_0=W\),就是开一个空的组。其他的 \(f_i\) 赋 INF

答案就是 \(f_{(1<<n)-1}\) 。

代码

最新文章

  1. Linux查看系统状态命令
  2. 2.1 python使用MongoDB 示例代码
  3. webstorm 10 出现不能run cordova项目
  4. Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建
  5. [转]NopCommerce How to code my own payment method
  6. UI中经常出现的下拉框下拉自动筛选效果的实现
  7. [ javascript css clip ] javascript css clip 的奇思妙想之文字拼接效果
  8. Caffe学习系列(6):Blob,Layer and Net以及对应配置文件的编写
  9. [SAP ABAP开发技术总结]采购、销售、生产简单业务流程
  10. UML工具选择
  11. Google Code Jam 2009, Round 1C C. Bribe the Prisoners (记忆化dp)
  12. E-BOM和M-BOM的区别
  13. Jenkins 快速搭建持续集成环境
  14. Eclipse总是自动关闭
  15. Spring事务管理与数据库隔离级别的关系(Spring+mysql)
  16. 在VS2015中用C++编写可被C#调用的DLL
  17. Centos7 网络报错Job for iptables.service failed because the control process exited with error code.
  18. (原)caffe中的conv
  19. java中random()函数用法介绍
  20. 关于js事件执行顺序小技巧

热门文章

  1. jQuery筛选选择器
  2. centos7 安装最新的 wiki confluence
  3. oracle :如何测试数据库安装是否成功
  4. POJ 2084 Game of Connections 卡特兰数
  5. JS中的单例模式及单例模式原型类的实现
  6. doc系统maven打包脚本
  7. 如何用Redis统计独立用户访问量
  8. mysql某建表语句
  9. 题解 AtCoder Beginner Contest 168
  10. Oracle如何以逗号分隔的字符串拆分为多行数据