【bzoj4800】: [Ceoi2015]Ice Hockey World Championship

N<=40所以如果直接dfs背包会TLE

考虑Meet-in-the-middle

如果把N个物品分成前后A B两段分别背包

分别在A B中可行的方案的花费记录在a b中

答案就是a[i]+b[j]<=M的个数

把a b排序 然后序列就是单调的了

两个指针扫一遍就好了

 /* http://www.cnblogs.com/karl07/ */
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
#define ll long long ll n,m,mid,ans;
ll c[],a[][],ca[]; void dfs(int p,int x,ll cost){
if (cost>m) return;
if ((x>=mid && p==) || (x>=n && p==)){
a[p][++ca[p]]=cost;
return;
}
dfs(p,x+,cost+c[x+]);
dfs(p,x+,cost);
} int main(){
scanf("%lld%lld",&n,&m);
for (int i=;i<=n;i++) scanf("%lld",&c[i]);
mid=n/;
dfs(,,);
dfs(,mid,);
sort(a[]+,a[]+ca[]+);
sort(a[]+,a[]+ca[]+);
for (int l=,r=ca[];l<=ca[] && r>=;ans+=r,l++) while (a[][l]+a[][r]>m) r--;
printf("%lld\n",ans);
return ;
}

竟然有Rank4(2017.3.31)。。好快啊。。

最新文章

  1. hdu2005第几天?
  2. 从.NET平台调用Win32 API
  3. [C#.net]PostMessage与SendMessage的区别
  4. 东大OJ-1588: Routing Table
  5. JAVA编程规则
  6. Rewrite Path in Asp.Net MVC Project
  7. POJ 3280 Cheapest Palindrome(DP 回文变形)
  8. 把测试app打包成ipa文件
  9. mklink命令转移win7系统盘文件夹users和programdata(附xp的方法)
  10. 用SHELL与列表处理了件尴尬事
  11. BZOJ 2783 JLOI 2012 树 乘+二分法
  12. CSharp设计模式读书笔记(8):桥接模式(学习难度:★★★☆☆,使用频率:★★★☆☆)
  13. aync await 进一步探索
  14. Visual Studio 2013创建自定义多项目模版
  15. Linux命令_cp
  16. 编写基于Property-based的单元测试
  17. 基本css说明
  18. 【下一代核心技术DevOps】:(四)私有镜像库阿里云Docker服务使用
  19. 一:理解ASP.NET的运行机制(例:通过HttpModule来计算页面执行时间)
  20. BZOJ 1834 网络扩容 最大流+最小费用流

热门文章

  1. Java栈,队列,优先队列的使用
  2. css3弹性布局语法全解
  3. 2016.4.6 WinForm显示PDF两种方法
  4. 文件锁简单操作(lockfileEx\unlockfileEx)
  5. 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN
  6. hadoop 更改 tmp目录
  7. 环境变量,include搜索路径,lib库搜索路径
  8. js实现导航栏的吸顶操作
  9. eclipse java 注释模板配置详解
  10. ruby 数组与散列