Description

Input

Output

Sample Input

3 10
1 2 10

Sample Output

5

Data Constraint

Hint

Solution

  • 看到数据范围(n≤40n\leq40),就不由自主地想到折半搜索。

  • 于是把 nn 先折半,每边 2020 ,设两段的总花费分别为 x,yx,y ,则显然满足:

    x+y≤m

    x+y\leq m

  • 前半段 O(220)O(2^{20}) 枚举每个位置选不选(即顺便算出当前的 xx),

  • 那么后半段的 yy 就需要满足:

    y≤m−x

    y\leq m-x

  • 那么我们可以将所有的 xx 加入一个数组中,并从小到大排序。

  • 在搜到一个 yy 的时候,就在数组中二分查找,直接统计数量即可。

  • 总时间复杂度为 O(2N+N log N)O(2^N+N\ log\ N) 。

Code

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
const int mo=1e7+7;
int n,n1;
LL m,ans;
LL a[41],f[mo];
inline LL read()
{LL X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline void dfs1(int x,LL y)
{if(y>m) return;if(x>n1){f[++f[0]]=y;return;}dfs1(x+1,y+a[x]);dfs1(x+1,y);
}
inline void dfs2(int x,LL y)
{if(y>m) return;if(x>n){int l=1,r=f[0];while(l<r){int mid=(l+r)>>1;if(f[mid]<=m-y) l=mid+1; else r=mid;}if(f[l]>m-y) l--;ans+=l;return;}dfs2(x+1,y+a[x]);dfs2(x+1,y);
}
int main()
{n=read(),m=read(),n1=n>>1;for(int i=1;i<=n;i++) a[i]=read();dfs1(1,0);sort(f+1,f+1+f[0]);dfs2(n1+1,0);printf("%lld",ans);return 0;
}

JZOJ 5264. 【NOIP2017模拟8.12A组】化学相关推荐

  1. JZOJ 5263. 【NOIP2017模拟8.12A组】分手是祝愿

    Description Input Output Sample Input 2 2 15 19 3 30 40 20 Sample Output 285 2600 Data Constraint So ...

  2. JZOJ.5264【NOIP2017模拟8.12】化学

    Description Input Output Sample Input 3 10 1 2 10 Sample Output 5 Data Constraint Hint 搜索.考虑到m很大,我们不 ...

  3. JZOJ 5234. 【NOIP2017模拟8.7A组】外星人的路径

    Description 有一个外星人控制了你的大脑.一开始你处于原点(0,0).外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左). 平面上有N 个关键点,每当外星 ...

  4. JZOJ 5344. 【NOIP2017模拟9.3A组】摘果子

    Description Input Output Sample Input 7 9 39 6 13 2 22 6 7 4 -19 5 28 6 -17 1 2 1 3 2 4 1 5 4 6 2 7 ...

  5. JZOJ 5244. 【NOIP2017模拟8.8A组】Daydreamin ' (daydream)

    Description worldwideD最近有午睡的习惯~某日中午,他做了一个梦:梦见有一个怪人,她去一个岛上住N+1天(编号为0到N).这是在大洋中的岛,每天要么是晴天,要么刮台风.她到达岛的第 ...

  6. JZOJ 5236. 【NOIP2017模拟8.7A组】利普希茨

    Description Input 输入文件名为lipschitz.in. 第一行一个整数n. 接下来一行n个整数,描述序列A. 第三行一个数q . 接下来q行,每行三个整数.其中第一个整数type表 ...

  7. [jzoj5236]【NOIP2017模拟8.7A组】利普希茨

    这道像数据结构的结论题传送门 我觉得这断不能怪我 一上来给出操作种类和 LogLog 形式的数据范围有如套路一般 Solution 60p 容易想到分治 对于整个序列,可以割作三份,分界点为最大值和最 ...

  8. 利普希茨【NOIP2017模拟8.7A组】

    题目 Input 输入文件名为lipschitz.in. 第一行一个整数n. 接下来一行n个整数,描述序列A. 第三行一个数q . 接下来q行,每行三个整数.其中第一个整数type表示操作的类型. t ...

  9. jzoj5236. 【NOIP2017模拟8.7A组】利普希茨

    Description Input 输入文件名为lipschitz.in. 第一行一个整数n. 接下来一行n个整数,描述序列A. 第三行一个数q . 接下来q行,每行三个整数.其中第一个整数type表 ...

最新文章

  1. 博途v13打开软件时显示连接不到服务器,TIA博途V13软件在打开程序过程中出现以下这种情况,怎么回事?...
  2. python凹多边形分割_使用Opencv python从Image中裁剪凹面多边形
  3. Java 动态绑定 静态绑定
  4. Linux硬盘安装_ubuntu
  5. 如何找出SAP Fiori launchpad URL start_up请求发起的具体位置
  6. mysql rpm包安装指定路径_安装rpm包时指定路径
  7. @Transactional注解的失效场景
  8. Atitit 编程语言的block概念 目录 1. 匿名block 1 1.1. 函数块 方法快 1 1.2. Sp udf块 1 2. 实现block的方式 1 2.1. 早期的语言大多是采用en
  9. uniapp阿里云图标库如何本地引入
  10. 计算机主板性能参数,影响电脑性能的硬件参数之主板
  11. 谷歌网站错误服务器连接,谷歌浏览器 您的链接存在安全隐患 此网站是用的安全配置已过时...---服务器 TLS1.0 1TLS.2配置方法...
  12. Java研发技术学习路线
  13. Soot的安装及其初步使用
  14. python将图片批量保存至word文档中
  15. Apollo Planning决策规划算法代码详细解析 (5):规划算法流程介绍
  16. catalog 与 category 的区别
  17. 一位大学老师写给大学新生的100条肺腑之言
  18. 格密码开源库PALISADE的使用
  19. Python 标准库之 json 编码和解码器『详解』
  20. pyinstaller 打包py文件 以及字体、图片等资源的引用

热门文章

  1. Django入门:DoesNotExist: User matching query does not exist.
  2. MPI学习存在的一些问题
  3. Linux /dev目录详解和Linux系统各个目录的作用
  4. ./configure 参数解析
  5. extjs chart无法在panel中显示_手绘风格的 JS 图表库:Chart.xkcd
  6. 【Matlab】你想知道在图表标题中显示变量的一切
  7. [云炬创业学笔记]第二章决定成为创业者测试9
  8. 科大星云诗社动态20201228
  9. Karush-Kuhn-Tucker (KKT条件)
  10. 计算机管理磁盘管理,如何打开磁盘管理?