JZOJ 4725. 质数序列
Description
对于一个长度为L ≥ 2的序列,X:x1,x2,...,xL ,如果满足对于任意的1 ≤ i < j ≤ L,均有 xi+xj为质数,则他们把X称为一个“质数序列”。
现在有一个长度为N的序列,A:a1,a2,...,aN ,他希望从中选取一个包含元素最多的子序列,使得这个子序列是一个质数序列。如果元素个数相同,则使子序列之和最大(在此意义下,保证有唯一解)。
因为他们还要xx,所以这个任务就交给你了。
Input
接下来一行包含N个正整数,依次描述 a1,a2,...,aN。
Output
Sample Input
3
2 3 4
Sample Output
2
3 4
Data Constraint
对于60%的数据满足N<=1000 ,ai<=5,000,000 。
对于100%的数据满足N<=1000 ,1<=ai<=15,000,000 。
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#define N 1007
#define M 30000007
#define LL long long
using namespace std;
int n,zs[M/],T1;
LL a[N],sum,q,p;
bool b[M + ]; void Pre_work(){
for(int i=;i<=M;i++){
if(!b[i]) zs[++zs[]]=i;
for(int j=;j<=zs[];j++)
if((LL)i*zs[j]<=M-) b[i*zs[j]]=;
else break;
}
} int main(){
Pre_work();
memset(a,,sizeof(a));
q=,p=,sum=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%lld",&a[i]);
if (a[i]==) T1++;
}
if (T1>){
for (int i=;i<=n;i++)
if (!b[a[i]+]) q=max(q,a[i]);
if (q!= && q!=){
printf("%d\n",T1+);
for (int i=;i<=T1;i++) printf("1 ");
printf("%lld",q);
}
else{
printf("%d\n",T1);
for (int i=;i<=T1;i++) printf("1 ");
}
return ;
}
else if (T1==){
for (int i=;i<=n;i++)
if (!b[a[i]+]) q=max(q,a[i]);
if (q!= && q!=){
printf("%d\n",T1+);
for (int i=;i<=T1;i++) printf("1 ");
printf("%lld",q);
return ;
}
}
else{
for(int i=;i<n;i++)
for(int j=i+;j<=n;j++)
if (!b[a[i]+a[j]]){
if(a[i]+a[j]>sum){
q=a[i],p=a[j];
sum=q+p;
}
}
printf("2\n");
if (q>p) swap(q,p);
printf("%lld %lld", q, p);
}
}
JZOJ 4725. 质数序列的更多相关文章
- 【JZOJ4725】质数序列 题解(数学)
题目大意:质数序列是指这个序列中任意两个数的和均为质数.先给出一个序列${a_{n}}$,从中取出元素构成最长质数序列,问其长度并输出序列.若长度相同则求和最大的序列.保证答案唯一. -------- ...
- [BZOJ4857][JSOI2016]反质数序列[最大点独立集]
题意 在长度为 \(n\) 的序列 \(a\) 中选择尽量长的子序列,使得选出子序列中任意两个数的和不为质数. \(n\leq3000\ ,a_i\leq10^5\). 分析 直接按照奇偶性建立二分图 ...
- [JSOI2016]反质数序列
我竟然半个小时切了一道JSOI2016,,,,不敢相信. 首先可以发现,如果N个数中1出现的次数<=1的话,我们按不能在一个集合连无向边的话,连出的一定是一个二分图. 接下来我来证明一下: 因为 ...
- BZOJ 4857 反质数序列
题面 奇数+奇数一定不是质数(1+1除外),偶数+偶数一定不是质数,质数只可能出现在偶数+奇数中 把所有的点排成两列,权值为奇数的点在左边,权值为偶数的在右边 如果左边的点x+右边的点y是质数,我们就 ...
- 【LOJ】#2081. 「JSOI2016」反质数序列
题解 我居然都没反应过来二分图内选集合两两不能有边是最大独立集了 我退役吧 显然连边只能在奇数和偶数之间,然后二分图求最大独立集是节点数-最大匹配数 啊当然还有对于1的话只能留一个1 代码 #incl ...
- [BZOJ 4857][Jsoi2016]反质数序列
传送门 $ \color{green} {solution : } $ 因为 $ 1 $ 的个数我们最多只能选一个,所以剩下的数如果组成素数那么只有一奇一偶,显然是个二分图模型 #include &l ...
- HashTree(哈希树) ——和trie类似,只是将字符换成了质数,sphinx用到了???
摘自:http://blog.csdn.net/yang_yulei/article/details/46337405 哈希树的理论基础 [质数分辨定理] 简单地说就是:n个不同的质数可以" ...
- .net源码分析 – Dictionary<TKey, TValue>
接上篇:.net源码分析 – List<T> Dictionary<TKey, TValue>源码地址:https://github.com/dotnet/corefx/blo ...
- 探索性思维——How to Solve It
我觉得这篇文章和什么都能扯上点关系,比如编程. 很多人已经讨论过数学与编程的关系了,这里不想过多探讨,只是简单提一下:有些人把数学贬低地一文不值,认为做一般的应用软件用不到数学:而有些人则把数学拔高到 ...
随机推荐
- Maven的学习资料收集--(九) 构建SSH项目以及专栏maven
在这里整合一下,使用Maven构建一个SSH项目 1.新建一个Web项目 可以参照前面的博客 2.添加依赖,修改pom.xml <project xmlns="http://maven ...
- Windows安全认证是如何进行的?[Kerberos篇]
最近一段时间都在折腾安全(Security)方面的东西,比如Windows认证.非对称加密.数字证书.数字签名.TLS/SSL.WS-Security等.如果时间允许,我很乐意写一系列的文章与广大网友 ...
- 项目开发bug记录
项目开发中遇到了一个问题,类中出现未知属性 ‘ $jacocoData ’,准确的来说,实际上在集成测试阶段,系统自动运行测试用例时,抛出来的异常提示信息,但是在开发阶段是不存在的.这个问题是以前没有 ...
- parameter与attribute的使用场合(转载自草原和大树)
Attribute 和 Parameter 的区别 (1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法 (2)当两个Web组件之间为 ...
- Android在应用设置里关闭权限,返回生命周期处理
问题 在处理6.0运行时权限时,很多人都忽略了这样一个问题: 在一个App应用里,如果已经允许了一个权限比如(读取通讯权限),此刻去调用相机,弹出权限申请对话框,此刻点击拒绝,然后经过处理后弹出去设置 ...
- meterpreter > run post/windows/capture/keylog_recorder
meterpreter > migrate 1548[*] Migrating to 1548...[*] Migration completed successfully.meterprete ...
- 一、基于Qt的图像矩形区域改色
Qt环境下图像的打开和涂色 一.设计目标 能够在 Qt QtCreator 环境下打开常用图像格式文件,诸如 bmp.jpg.png 图像等,然后将他们转化为 Qt 中的 QImage 类,并进行矩形 ...
- Linux最常用命令实战
1.改变机器的名称: vim /etc/hostname Master 在文件中修改机器名称为我们想要的名称(相当于域名) 可以通过shutdown -h now 关闭 2.查看当前机器IP: ifc ...
- FPGA工具篇——编辑器Notepad++
body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLi ...
- 如何查看CRM WebUI,C4C和Hybris里的页面技术信息
CRM 在WebClient UI页面上按F2,就能看到页面的技术信息, 可以找到当前页面是哪一个BSP component实现的: C4C 在浏览器url里添加debugMode=true,然后按住 ...