Description

由于去NOI的火车“堵”了数不清时间,小Z和小D打完ETG,闲着无聊开始看今年的JSOI省选题,并尝试着修改题目:
对于一个长度为L ≥ 2的序列,X:x1,x2,...,xL ,如果满足对于任意的1 ≤ i < j ≤ L,均有 xi+xj为质数,则他们把X称为一个“质数序列”。
现在有一个长度为N的序列,A:a1,a2,...,aN ,他希望从中选取一个包含元素最多的子序列,使得这个子序列是一个质数序列。如果元素个数相同,则使子序列之和最大(在此意义下,保证有唯一解)。
因为他们还要xx,所以这个任务就交给你了。

Input

输入第一行包含一个正整数 N。
接下来一行包含N个正整数,依次描述 a1,a2,...,aN。

Output

输出两行,第一行一个整数L,表示最长质数子序列的长度,第二行L个整数从小到大输出,表示最长质数子序列(元素个数相同,则使子序列之和最大)。

Sample Input

3
2 3 4

Sample Output

2
3 4

Data Constraint

对于30%的数据满足N<=100 。
对于60%的数据满足N<=1000 ,ai<=5,000,000 。
对于100%的数据满足N<=1000 ,1<=ai<=15,000,000 。
 
做法:思考一下就会发现,本体其实只有3种情况
{
  若序列中不存在1或只有1个1,那么最长的长度一定为2,此时只要找两个最大的就好
  若序列中存在2个1,那么寻找序列中最大的一个能和1组成质数的数,若找不到,视作情况1
  若序列中存在3个及以上的1,那么参考情况2,若找不到,输出1的个数和所有的1即可
}
 
 #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. 质数序列的更多相关文章

  1. 【JZOJ4725】质数序列 题解(数学)

    题目大意:质数序列是指这个序列中任意两个数的和均为质数.先给出一个序列${a_{n}}$,从中取出元素构成最长质数序列,问其长度并输出序列.若长度相同则求和最大的序列.保证答案唯一. -------- ...

  2. [BZOJ4857][JSOI2016]反质数序列[最大点独立集]

    题意 在长度为 \(n\) 的序列 \(a\) 中选择尽量长的子序列,使得选出子序列中任意两个数的和不为质数. \(n\leq3000\ ,a_i\leq10^5\). 分析 直接按照奇偶性建立二分图 ...

  3. [JSOI2016]反质数序列

    我竟然半个小时切了一道JSOI2016,,,,不敢相信. 首先可以发现,如果N个数中1出现的次数<=1的话,我们按不能在一个集合连无向边的话,连出的一定是一个二分图. 接下来我来证明一下: 因为 ...

  4. BZOJ 4857 反质数序列

    题面 奇数+奇数一定不是质数(1+1除外),偶数+偶数一定不是质数,质数只可能出现在偶数+奇数中 把所有的点排成两列,权值为奇数的点在左边,权值为偶数的在右边 如果左边的点x+右边的点y是质数,我们就 ...

  5. 【LOJ】#2081. 「JSOI2016」反质数序列

    题解 我居然都没反应过来二分图内选集合两两不能有边是最大独立集了 我退役吧 显然连边只能在奇数和偶数之间,然后二分图求最大独立集是节点数-最大匹配数 啊当然还有对于1的话只能留一个1 代码 #incl ...

  6. [BZOJ 4857][Jsoi2016]反质数序列

    传送门 $ \color{green} {solution : } $ 因为 $ 1 $ 的个数我们最多只能选一个,所以剩下的数如果组成素数那么只有一奇一偶,显然是个二分图模型 #include &l ...

  7. HashTree(哈希树) ——和trie类似,只是将字符换成了质数,sphinx用到了???

    摘自:http://blog.csdn.net/yang_yulei/article/details/46337405 哈希树的理论基础 [质数分辨定理] 简单地说就是:n个不同的质数可以" ...

  8. .net源码分析 – Dictionary<TKey, TValue>

    接上篇:.net源码分析 – List<T> Dictionary<TKey, TValue>源码地址:https://github.com/dotnet/corefx/blo ...

  9. 探索性思维——How to Solve It

    我觉得这篇文章和什么都能扯上点关系,比如编程. 很多人已经讨论过数学与编程的关系了,这里不想过多探讨,只是简单提一下:有些人把数学贬低地一文不值,认为做一般的应用软件用不到数学:而有些人则把数学拔高到 ...

随机推荐

  1. how to keep impact-crusher in good condition

    how to keep impact-crusher in good condition Why we have to maintenance impact crusher? As we talked ...

  2. git merge的参数--squash的用处

    本地分支处理问题的过程中一般都是commit在本地分支,当验证完毕后就需要merge到baseline上. 在不懂merge的--squash这个参数前,我一般是这么操作的: 1.在本地分支" ...

  3. SOA框架

    SOA是什么 估计很多人都听说过SOA这个词了,但是很多人还是不知道到底什么是SOA.开发人员很容易理解为是一个Web Service,但是这绝对不是SOA,那顶多只能算是SOA的一种实现方法.那么, ...

  4. Sublime Text插件列表

    本文由 伯乐在线 - 艾凌风 翻译,黄利民 校稿.英文出处:ipestov.com.欢迎加入翻译组. 本文收录了作者辛苦收集的Sublime Text最佳插件,很全. 最佳的Sublime Text ...

  5. Intellij IDEA 最头大的问题,如何自定义注释模板?

    想栈长我当初从 Eclipse 转用 IDEA 真是纠结,放弃然后尝试了N次,不过现在已经算是转型成功了,可以完全脱离 Eclipse 撸码了,虽然说我现在真的撸得非常少了.. 说到 IDEA 的痛点 ...

  6. Web前端开发的学习过程

    2018年 5月27日 开始在MDN上学习HTML/CSS/JavaScript.——6月18日 基本学完MDN的“学习Web开发”的HTML/CSS/JavaScript部分. 6月9日 开始在IF ...

  7. IIS 处理高并发

    1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools > Advanced Settings Queu ...

  8. iOS将大文件映射到内存(读取大文件)

    http://blog.csdn.net/xyt243135803/article/details/40995759 在<中国区GPS偏移纠正(适用于Google地图)>一文中曾读取一个7 ...

  9. 【BZOJ1013】[JSOI2008] 球形空间产生器(高斯消元)

    点此看题面 大致题意: 给定一个\(n\)维球体上的\(n+1\)个点,请你求出这个球体的圆心的位置. 列出方程 这一看就是一道解方程题. 我们可以设这个球体的圆心的位置为\((x_1,x_2,..x ...

  10. 【HDU4507】恨7不成妻(数位DP)

    点此看题面 大致题意: 让你求出一段区间内与\(7\)无关的数的平方和.与\(7\)无关的数指整数中任意一位不为\(7\).整数的每一位加起来的和不是\(7\)的整数倍.这个整数不是\(7\)的倍数. ...