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

-----------------

小小的数学题。

1.偶数+偶数不是质数,奇数+奇数不是质数。但某些偶数+奇数($1$)是质数。所以这个序列中$1$是个很关键的因素。

我们进行分类讨论:

1.若序列中$1$的个数大于$2$

  长度为所有$1$的个数。

  所有$1$再加一个偶数。(此偶数+$1$后为质数)

2.若序列中$1$的个数等于$2$

  两个$1$。

  两个$1$加一个偶数。

  偶数+奇数。

3.若序列中$1$的个数小于$2$

  偶数+奇数。

质数需要线性筛预处理。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
bool vis[];
int n,p[],c,a[],m,t,s,b;
signed main()
{
scanf("%d",&n);
for (int i=;i<=n;i++)
{
scanf("%d",&a[i]);
m=max(m,a[i]);
if (a[i]==) c++;
}
for (int i=;i<=m;i++)
{
if (!vis[i]) p[++t]=i;
for (int j=;j<=t&&i*p[j]<=m;++j)
{
vis[i*p[j]]=;
if (i%p[j]==) break;
}
}
sort(a+,a+n+);
if (c>)
{
for (int i=n;i>=;i--)
{
if (!vis[a[i]+])
{
printf("%d\n",c+);
for (int j=c;j>=;j--) printf("1 ");
printf("%d ",a[i]);
return ;
}
}
for (int i=;i<=c;i++) printf("1 ");
return ;
}
for (int i=;i<=n;i++)
for (int j=;j<i;j++)
if (!vis[a[i]+a[j]]&&a[i]+a[j]>a[s]+a[b]) s=i,b=j;
if (!a&&!b)
{
for (int i=n;i>=;i--)
if (!vis[a[i]]) {printf("1\n%d",a[i]);return ;}
printf("");
}
printf("2\n%d %d",a[b],a[s]);
return ;
}

【JZOJ4725】质数序列 题解(数学)的更多相关文章

  1. JZOJ 4725. 质数序列

    Description 由于去NOI的火车“堵”了数不清时间,小Z和小D打完ETG,闲着无聊开始看今年的JSOI省选题,并尝试着修改题目:对于一个长度为L ≥ 2的序列,X:x1,x2,...,xL ...

  2. HDU 1027 Ignatius and the Princess II 选择序列题解

    直接选择序列的方法解本题,可是最坏时间效率是O(n*n),故此不能达到0MS. 使用删除优化,那么就能够达到0MS了. 删除优化就是当须要删除数组中的元素为第一个元素的时候,那么就直接移动数组的头指针 ...

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

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

  4. BZOJ 4403: 序列统计 数学 lucas

    4403: 序列统计 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4403 Description 给定三个正整数N.L和R,统计长度在 ...

  5. 力扣(LeetCode)计数质数 个人题解

    统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 一般方法,也就是一般人都会用的,将数从2到它本 ...

  6. K-消亡的质数-(简单数学)

    https://ac.nowcoder.com/acm/contest/3346/K 题意:判断一个素数p是不是某两个数的立方差. 刚看到这道题一时半会都没有什么思路,看了题解恍然大悟,太久没碰数学或 ...

  7. P2023 [AHOI2009]维护序列 题解(线段树)

    题目链接 P2023 [AHOI2009]维护序列 解题思路 线段树板子.不难,但是...有坑.坑有多深?一页\(WA\). 由于乘法可能乘\(k=0\),我这种做法可能会使结果产生负数.于是就有了这 ...

  8. cojs 疯狂的魔法树 疯狂的颜色序列 题解报告

    疯狂的魔法树 一个各种操作大杂烩的鬼畜数据结构题目 首先我们注意到树的形态是半随机的 我们可以树分块,对树分成若干个块 对于每个块我们维护一个add标记表示增量 维护一个vis标记表示覆盖量 注意标记 ...

  9. C++版 - 剑指offer 面试题22:栈的压入、弹出序列 题解

    剑指offer 面试题22:栈的压入.弹出序列 提交网址: http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId ...

随机推荐

  1. Bootstrap 搭建基础页面

    基于Bootstrap实现下图所示效果的页面,一个居中的标题和一个大按钮: <!DOCTYPE html> <html lang="zh-cn"> < ...

  2. requests接口自动化9-共享session和传递cookie

    前言: session:用requests.session()创建会话,可以将会话信息传递给其他接口 cookie:用RequestsCookieJar或者cookie字典传递cookie信息 fil ...

  3. Alexnet网络结构

    最近试一下kaggle的文字检测的题目,目前方向有两个ssd和cptn.直接看看不太懂,看到Alexnet是基础,今天手写一下网络,记录一下啊. 先理解下Alexnet中使用的原件和作用: 激活函数使 ...

  4. The solution for apt-get update Err 404

    最近在ubuntu 12.10上执行sudo apt-get update 命令后出现了如下错误: Ign http://extras.ubuntu.com natty/main Translatio ...

  5. Spring Boot Redis 实现分布式锁,真香!!

    之前看很多人手写分布式锁,其实 Spring Boot 现在已经做的足够好了,开箱即用,支持主流的 Redis.Zookeeper 中间件,另外还支持 JDBC. 本篇栈长以 Redis 为例(这也是 ...

  6. 如何将你写的脚本程序打包成一个exe可执行程序

    ​    编写的程序打包成一个exe文件,随时可以双击执行,想想是不是很酷.接下来我们一起看一下如何将自己编写的程序打包为一个exe的可执行程序. 将程序打包成exe的好处 除了满足自己的成就感以外, ...

  7. springmvc 重定向到外网地址

    return  new ModelAndView(new RedirectView("http://www.baidu.com"));

  8. 3.OSPF协议及链路状态算法

    OSPF的特点: 1.使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器.最终整个区域内所有路由器都得到了 ...

  9. 3.TCP协议

    一.TCP协议特点和报文段格式 面向连接的传输层协议 每一条TCP连接只能有两个端点 TCP提供可靠交付的服务,无差错,不丢失,不重复,按序到达 全双工通信 -> 发送缓冲:准备发送的数据&am ...

  10. 用Python爬取双色球开奖信息,了解一下

    1工具     2具体方法 1.使用python2.7编写爬取脚本 这里除了正常的爬取操作,还增加了独立的参数设定.如果没有参数,爬取的数据就在当前目录下:如果有参数,可以设定保存目录.保存文件名后缀 ...