【JZOJ4725】质数序列 题解(数学)
题目大意:质数序列是指这个序列中任意两个数的和均为质数。先给出一个序列${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】质数序列 题解(数学)的更多相关文章
- JZOJ 4725. 质数序列
Description 由于去NOI的火车“堵”了数不清时间,小Z和小D打完ETG,闲着无聊开始看今年的JSOI省选题,并尝试着修改题目:对于一个长度为L ≥ 2的序列,X:x1,x2,...,xL ...
- HDU 1027 Ignatius and the Princess II 选择序列题解
直接选择序列的方法解本题,可是最坏时间效率是O(n*n),故此不能达到0MS. 使用删除优化,那么就能够达到0MS了. 删除优化就是当须要删除数组中的元素为第一个元素的时候,那么就直接移动数组的头指针 ...
- [BZOJ4857][JSOI2016]反质数序列[最大点独立集]
题意 在长度为 \(n\) 的序列 \(a\) 中选择尽量长的子序列,使得选出子序列中任意两个数的和不为质数. \(n\leq3000\ ,a_i\leq10^5\). 分析 直接按照奇偶性建立二分图 ...
- BZOJ 4403: 序列统计 数学 lucas
4403: 序列统计 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4403 Description 给定三个正整数N.L和R,统计长度在 ...
- 力扣(LeetCode)计数质数 个人题解
统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 一般方法,也就是一般人都会用的,将数从2到它本 ...
- K-消亡的质数-(简单数学)
https://ac.nowcoder.com/acm/contest/3346/K 题意:判断一个素数p是不是某两个数的立方差. 刚看到这道题一时半会都没有什么思路,看了题解恍然大悟,太久没碰数学或 ...
- P2023 [AHOI2009]维护序列 题解(线段树)
题目链接 P2023 [AHOI2009]维护序列 解题思路 线段树板子.不难,但是...有坑.坑有多深?一页\(WA\). 由于乘法可能乘\(k=0\),我这种做法可能会使结果产生负数.于是就有了这 ...
- cojs 疯狂的魔法树 疯狂的颜色序列 题解报告
疯狂的魔法树 一个各种操作大杂烩的鬼畜数据结构题目 首先我们注意到树的形态是半随机的 我们可以树分块,对树分成若干个块 对于每个块我们维护一个add标记表示增量 维护一个vis标记表示覆盖量 注意标记 ...
- C++版 - 剑指offer 面试题22:栈的压入、弹出序列 题解
剑指offer 面试题22:栈的压入.弹出序列 提交网址: http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId ...
随机推荐
- 小程序报错 parameter.content should be String instead of Undefined;
自己遇到了两种情况会导致这个问题 1.参数名写错未定义,然后赋值的时候值为undefined 2.服务端返回的值错误,返回的值为空,导致赋值时报错 解决方法: 1.检查参数名,如不是全局变量的应在da ...
- php批量 下载图片
<?php set_time_limit(0); $file = fopen("index.csv",'r');$temp = [];$i=0;$firstsku='';wh ...
- 06 Vue生命周期钩子
生命周期钩子 表示一个vue实例从创建到销毁的这个过程,将这个过程的一些时间节点赋予了对应的钩子函数 钩子函数: 满足特点条件被回调的方法 new Vue({ el: "#app" ...
- order by 注入姿势
order by 注入原理 其实orde by 注入也是sql注入的一种,原理都一样就是mysql语法的区别,order by是用来排序的语法. sql-lab讲解 判断方法 1.通过做运算来判断如: ...
- JVM 专题十四:本地方法接口
1. 本地方法接口 2. 什么是本地方法? 简单来讲,一个Native Method就是一个Java调用非Java代码的接口.一个Native Method是这样一个java方法:该方法的实现由非Ja ...
- Chrome浏览器获取XPATH的方法----通过开发者工具获取
chrome有自己的开发者工具,可以用这儿来直接获取xpath,都不用担心正确性了. 具体使用步骤如下: 1.在chrome浏览器的右上角有个选择菜单,也就是这个,点一下: 2.在列表最后面有个“更多 ...
- 前端04 /css样式
前端04 /css样式 目录 前端04 /css样式 昨日内容回顾 css引入 选择器 基础选择器 组合选择器 属性选择器 伪类选择器 伪元素选择器 优先级(权重) 通用选择器 css样式 1高度宽度 ...
- 信不信?各种红包App最后都会整合游戏!App+游戏的变现模式分析
最近两个月「晓衡在线猿码微服」商城上出现了一类需求特别的客户: 我们有个 App,日活用户达到 XXX万,计划在 App 中嵌入游戏增加用户留存和利用流量变现,还有... 看你们这里游戏不少,想了解一 ...
- VS code 的集成终端Integrated terminal 的颜色问题
其实是默认终端的配色问题在使用vs code时,运行代码时,控制台是这样子的,搞得我很难受 一块一块的 其实是默认终端的配色问题 默认终端一般是powershell,还可以是cmd,或者git bas ...
- windy数(数位dp)
https://www.luogu.com.cn/blog/virus2017/shuweidp https://www.luogu.com.cn/problem/P2657 #include < ...