Codeforces 912E Prime Gift(预处理 + 双指针 + 二分答案)
题目链接 Prime Gift
题意 给定一个素数集合,求第k小的数,满足这个数的所有质因子集合为给定的集合的子集。
保证答案不超过$10^{18}$
考虑二分答案。
根据折半的思想,首先我们把这个集合的数分成两组。
然后分别生成这两组质数所能表示出的正整数的集合。
然后把这个集合sort一下,我们得到了两个有序的数列。
在计算小于等于某个数$x$的符合题目条件的数的时候,我们枚举第一个集合中的数,
用双指针定位和当前枚举到的数乘积恰好小于等于$x$的位置。
然后累加。
这里有一个细节,我们要保证两个正整数的集合的大小要尽可能接近。
所以分组方式要稍微讲究一下,
我这里先对整个数列sort,再根据位置的奇偶性把整个数列分成两组。
这道题的极限数据的集合应该是前$16$小的质数……
#include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i) typedef long long LL; const int N = 63; int n;
int cnt;
LL a[N], c[N], k, l, r;
vector <LL> s[2]; void dfs(int i, int x, LL now){
s[i].push_back(now);
rep(j, x, cnt) if (1e18 / c[j] >= now) dfs(i, j, now * c[j]);
} LL solve(LL x){
int j = 0;
LL ret = 0;
dec(i, s[0].size() - 1, 0){
while (j < s[1].size() && s[1][j] <= x / s[0][i]) ++j;
ret += j;
}
return ret;
} int main(){ scanf("%d", &n);
rep(i, 1, n) scanf("%lld", a + i);
sort(a + 1, a + n + 1);
scanf("%lld", &k); cnt = 0;
rep(i, 1, n) if (i & 1) c[++cnt] = a[i];
dfs(0, 1, 1); cnt = 0;
rep(i, 1, n) if (!(i & 1)) c[++cnt] = a[i];
dfs(1, 1, 1); sort(s[0].begin(), s[0].end());
sort(s[1].begin(), s[1].end()); l = 1, r = 1e18;
while (l + 1 < r){
LL mid = (l + r) / 2;
if (solve(mid) >= k) r = mid;
else l = mid + 1;
} if (solve(l) >= k) printf("%lld\n", l);
else printf("%lld\n", r);
return 0;
}
Codeforces 912E Prime Gift(预处理 + 双指针 + 二分答案)的更多相关文章
- CF912E Prime Gift题解(搜索+二分答案)
		
CF912E Prime Gift题解(搜索+二分答案) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1314956 洛谷题目链接 $ $ CF题目 ...
 - Codeforces 912E - Prime Gift
		
912E - Prime Gift 思路: 折半枚举+二分check 将素数分成两个集合(最好按奇偶位置来,保证两集合个数相近),这样每个集合枚举出来的小于1e18的积个数小于1e6. 然后二分答案, ...
 - Codeforces 912E Prime Gift ( 二分 && 折半枚举 && 双指针技巧)
		
题意 : 给你 N ( 1 ≤ N ≤ 16 ) 个质数,然后问你由这些质数作为因子的数 ( 此数不超 10^18 ) & ( 不一定需要其因子包含所给的所有质数 ) 的第 k 个是什么 分析 ...
 - Codeforces H. Prime Gift(折半枚举二分)
		
题目描述: Prime Gift time limit per test 3.5 seconds memory limit per test 256 megabytes input standard ...
 - codeforces912E(折半搜索+双指针+二分答案)
		
E. Prime Gift E. Prime Gift time limit per test 3.5 seconds memory limit per test 256 megabytes inpu ...
 - CodeForces 1117C Magic Ship (循环节+二分答案)
		
<题目链接> 题目大意: 给定起点和终点,某艘船想从起点走到终点,但是海面上会周期性的刮风,船在任何时候都能够向四个方向走,或者选择不走,船的真正行走路线是船的行走和风的走向叠加的,求船从 ...
 - Codeforces Round #262 (Div. 2)C(二分答案,延迟标记)
		
这是最大化最小值的一类问题,这类问题通常用二分法枚举答案就行了. 二分答案时,先确定答案肯定在哪个区间内.然后二分判断,关键在于怎么判断每次枚举的这个答案行不行. 我是用a[i]数组表示初始时花的高度 ...
 - Codeforces Round #389 (Div. 2) 752E(二分答案)
		
题目大意 可以理解成有n个木板,可以选取木板将其劈成2半(如果长度是奇数,就切成x和x+1),切完之后还可以再切 然后你要把这n个木板切成更多的木板,然后从中选择k个,使得这k个木板的最小长度尽量大 ...
 - Codeforces Round #384 (Div. 2)  734E(二分答案+状态压缩DP)
		
题目大意 给定一个序列an,序列中只有1~8的8个整数,让你选出一个子序列,满足下列两个要求 1.不同整数出现的次数相差小于等于1 2.子序列中整数分布是连续的,即子序列的整数必须是1,1,1.... ...
 
随机推荐
- 云计算之路-阿里云上:用上了开放缓存服务OCS
			
你知道在我们使用的云服务器中哪台最贵吗?跑memcached的缓存服务器(12G内存).你知道保证网站访问速度的功臣之一是谁吗?跑memcached的缓存服务器. 用云服务器这么高贵的内存跑memca ...
 - Asp.net自定义控件开发任我行(4)-ViewState保存控件状态
			
摘要 上一篇我们实现了下拉框的效果,此章的目的主要是保存控件属性状态 内容 我们先来看一个例子,后台代码不变,我们只改UI页面的代码,先在页面上拖放两个控件,一个是我们现在要开发的这个控件,另一个是按 ...
 - 【Luogu P1661】扩散
			
题目: 一个点每过一个单位时间就会向四个方向扩散一个距离,如图. 两个点$a$.$b$连通,记作$e(a,b)$,当且仅当$a$.$b$的扩散区域有公共部分.连通块的定义是块内的任意两个点$u$.$v ...
 - python-day4-装饰器的使用
			
摘要:某公司的基础开发平台,有大概N多个函数,boss要求小A,为每个函数添加权限验证功能,而且要求不得修改函数内部结构,让小A尝试从代码外部入手,作为新手小A来讲,这无疑是一个巨大的工作量,难道TM ...
 - Zookeeper ZooDefs.Ids
			
OPEN_ACL_UNSAFE : 完全开放的ACL,任何连接的客户端都可以操作该属性znode CREATOR_ALL_ACL : 只有创建者才有ACL权限 READ_ACL_UNSAFE:只能读 ...
 - ABP 未能加载文件或程序集“System.ComponentModel.Annota, Version=4.2.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。
			
切换System.ComponentModel.Annotations版本到4.4.1 重新编译即可
 - 查看apache和nginx的负载和连接数情况
			
1.查看apache当前并发访问数:netstat -an | grep ESTABLISHED | wc -l对比httpd.conf中MaxClients的数字差距多少. 2.查看有多少个进程数: ...
 - cf 843 B Interactive LowerBound [随机化]
			
题面: 传送门 思路: 这是一道交互题 比赛的时候我看到了直接跳过了...... 后来后面的题目卡住了就回来看这道题,发现其实比较水 实际上,从整个序列里面随机选1000个数出来询问,然后从里面找出比 ...
 - zookeeper与Kafka集群搭建及python代码测试
			
Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户 ...
 - Fabric 和 Sawtooth 技术分析(下)
			
http://blog.talkingdata.com/?p=6172 在前一篇文章(Fabric和Sawtooth技术分析(上))中,我们着重跟大家分享了 Fabric 相关的内容,在本篇文章中,我 ...