Description

Input

Output

Sample Input

3 10
1 2 10

Sample Output

5

Hint

 
题解:
  这个题目通过30%部分分的提示,我们可以猜出这个题目的正解就是折半搜索(然而我还是没做出来,毕竟是第一次写这种题吧!),我们考虑,先搜出前一半的,将所有方案的话费都记下来(存在f数组中),sort一遍,然后搜下一半,搜到最后的时候,对于每种方案(记后一半的花费为w),显然只要w+f[i]<=m就是合法方案,所以对于每个方案我们可以二分出最大的合法前一半方案的位置,直接统计答案就可以了.
 
代码:
  

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#define ll long long
using namespace std;
ll coss[],f[<<];
ll n,m,tot,nn,anss=; void dfs1(int now,int co){
if(co>m) return;
if(now==nn+){
f[++tot]=co;
return;
}
dfs1(now+,co+coss[now]);
dfs1(now+,co);
} void dfs2(int now,int co){
if(co>m) return;
if(now==n+){
int l=,r=tot,mid,ans=;
while(l<=r){
mid=(l+r)/;
if(f[mid]+co<=m) ans=mid,l=mid+;
else r=mid-;
}
anss+=ans;
return;
}
dfs2(now+,co+coss[now]);
dfs2(now+,co);
} int main()
{
scanf("%lld%lld",&n,&m);nn=n/;
for(int i=;i<=n;i++) scanf("%lld",&coss[i]);
dfs1(,);
sort(f+,f+tot+);
dfs2(nn+,);
printf("%lld",anss);
return ;
}

最新文章

  1. List view优化
  2. if 判断中出现逗号
  3. WPF下制作的简单瀑布流效果
  4. tcp/ip详解-ip头部选项字段
  5. JavaSE基础之this关键字的引用
  6. Interpreter
  7. 【英语】Bingo口语笔记(21) - 表达“请客吃饭”
  8. Android开发环境中的概念和工具介绍
  9. Can&#39;t create/write to file &#39;/tmp/#sql_3105_0.MYI&#39; (Errcode: 13)
  10. C# socket通信随记回顾
  11. Struts2-整理笔记(二)常量配置、动态方法调用、Action类详解
  12. testng中使用reportng报告
  13. MySQL数据库优化的八种方式
  14. VS code 中的各种变量 ${file},${fileBasename}
  15. WRITE T AFTER ADVANCING 2 LINES
  16. gdb 命令汇总
  17. char是所有类型中最短的 char多为8位,
  18. webscan v0.01
  19. 【转】每天一个linux命令(7):mv命令
  20. http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html

热门文章

  1. 026 模块3-random库的使用
  2. 可见性有序性,Happens-before来搞定
  3. HDFS之Qurom Journal Manager(QJM)实现机制分析
  4. FBCTF平台安装
  5. python做傅里叶变换
  6. 右键没有新建word选项
  7. Jenkins 持续集成安装及使用简介
  8. zookeeper 集群相关配置实践
  9. Flink 编程接口
  10. java、if判断和循环