JZOJ 5264. 【NOIP2017模拟8.12A组】化学
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≤mx+y\leq m
前半段 O(220)O(2^{20}) 枚举每个位置选不选(即顺便算出当前的 xx),
那么后半段的 yy 就需要满足:
y≤m−xy\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组】化学相关推荐
- 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 ...
- JZOJ.5264【NOIP2017模拟8.12】化学
Description Input Output Sample Input 3 10 1 2 10 Sample Output 5 Data Constraint Hint 搜索.考虑到m很大,我们不 ...
- JZOJ 5234. 【NOIP2017模拟8.7A组】外星人的路径
Description 有一个外星人控制了你的大脑.一开始你处于原点(0,0).外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左). 平面上有N 个关键点,每当外星 ...
- 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 ...
- JZOJ 5244. 【NOIP2017模拟8.8A组】Daydreamin ' (daydream)
Description worldwideD最近有午睡的习惯~某日中午,他做了一个梦:梦见有一个怪人,她去一个岛上住N+1天(编号为0到N).这是在大洋中的岛,每天要么是晴天,要么刮台风.她到达岛的第 ...
- JZOJ 5236. 【NOIP2017模拟8.7A组】利普希茨
Description Input 输入文件名为lipschitz.in. 第一行一个整数n. 接下来一行n个整数,描述序列A. 第三行一个数q . 接下来q行,每行三个整数.其中第一个整数type表 ...
- [jzoj5236]【NOIP2017模拟8.7A组】利普希茨
这道像数据结构的结论题传送门 我觉得这断不能怪我 一上来给出操作种类和 LogLog 形式的数据范围有如套路一般 Solution 60p 容易想到分治 对于整个序列,可以割作三份,分界点为最大值和最 ...
- 利普希茨【NOIP2017模拟8.7A组】
题目 Input 输入文件名为lipschitz.in. 第一行一个整数n. 接下来一行n个整数,描述序列A. 第三行一个数q . 接下来q行,每行三个整数.其中第一个整数type表示操作的类型. t ...
- jzoj5236. 【NOIP2017模拟8.7A组】利普希茨
Description Input 输入文件名为lipschitz.in. 第一行一个整数n. 接下来一行n个整数,描述序列A. 第三行一个数q . 接下来q行,每行三个整数.其中第一个整数type表 ...
最新文章
- 博途v13打开软件时显示连接不到服务器,TIA博途V13软件在打开程序过程中出现以下这种情况,怎么回事?...
- python凹多边形分割_使用Opencv python从Image中裁剪凹面多边形
- Java 动态绑定 静态绑定
- Linux硬盘安装_ubuntu
- 如何找出SAP Fiori launchpad URL start_up请求发起的具体位置
- mysql rpm包安装指定路径_安装rpm包时指定路径
- @Transactional注解的失效场景
- Atitit 编程语言的block概念 目录 1. 匿名block 1 1.1. 函数块 方法快 1 1.2. Sp udf块 1 2. 实现block的方式 1 2.1. 早期的语言大多是采用en
- uniapp阿里云图标库如何本地引入
- 计算机主板性能参数,影响电脑性能的硬件参数之主板
- 谷歌网站错误服务器连接,谷歌浏览器 您的链接存在安全隐患 此网站是用的安全配置已过时...---服务器 TLS1.0 1TLS.2配置方法...
- Java研发技术学习路线
- Soot的安装及其初步使用
- python将图片批量保存至word文档中
- Apollo Planning决策规划算法代码详细解析 (5):规划算法流程介绍
- catalog 与 category 的区别
- 一位大学老师写给大学新生的100条肺腑之言
- 格密码开源库PALISADE的使用
- Python 标准库之 json 编码和解码器『详解』
- pyinstaller 打包py文件 以及字体、图片等资源的引用
热门文章
- Django入门:DoesNotExist: User matching query does not exist.
- MPI学习存在的一些问题
- Linux /dev目录详解和Linux系统各个目录的作用
- ./configure 参数解析
- extjs chart无法在panel中显示_手绘风格的 JS 图表库:Chart.xkcd
- 【Matlab】你想知道在图表标题中显示变量的一切
- [云炬创业学笔记]第二章决定成为创业者测试9
- 科大星云诗社动态20201228
- Karush-Kuhn-Tucker (KKT条件)
- 计算机管理磁盘管理,如何打开磁盘管理?