Codeforces 665D Simple Subset【构造】
题目链接:
http://codeforces.com/problemset/problem/665/D
题意:
给定序列,从中找出最大的子集,使得子集中的数两两相加均为质数。
分析:
貌似有用最大团做的。可是不会,名字太难听也不是很想学。
n只有1000,暴力一发。
如果集合中有1的话,把所有1都放进去,我们最多再找一个偶数。
如果不考虑1的话,两个奇数,两个偶数相加均为偶数,所以最多找一个奇数和一个偶数。
枚举之后判断一下是否为质数就好了。
我觉得整个序列找不到两两相加为质数的时候的说明不是很清楚,wa了之后才知道找不到的话直接输出任何一个数。
代码:
#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
using namespace std;
vector<int>v1,v2,v, vv;
const int maxn = 1e3 + 5, maxm = 1e6+ 5;
int a[maxn];
bool isprime[2 * maxm];
void init()
{
memset(isprime, true, sizeof(isprime));
isprime[1] = false;
for(int i = 2; i < 2 * maxm; i++){
if(isprime[i]){
for(int j = 2 * i; j < 2 * maxm; j += i){
isprime[j] = false;
}
}
}
}
int main (void)
{
int n;
scanf("%d", &n);
bool flg = false;
init();
for(int i = 0; i < n; i++){
scanf("%d", &a[i]);
if(a[i] == 1){flg = true;v.push_back(1);}
else if(a[i] & 1) v1.push_back(a[i]);
else v2.push_back(a[i]);
}
if(flg){
for(int i = 0; i < v2.size(); i++){
if(isprime[v2[i] + 1]) {
v.push_back(v2[i]);
break;
}
}
}
bool flag = true;
if(v.size() < 2){
for(int i = 0; i < v1.size(); i++){
for(int j = 0; j < v2.size(); j++){
if(isprime[v1[i] + v2[j]]){ vv.push_back(v1[i]);vv.push_back(v2[j]);flag = false;break;}
}
if(!flag) break;
}
}
if(v.size() == 0){v.push_back(a[0]);}
if(vv.size() < v.size()){
printf("%d\n", v.size());
for(int i = 0; i < v.size(); i++) printf("%d ", v[i]);
}else {
printf("%d\n", vv.size());
for(int i = 0; i < vv.size(); i++) printf("%d ", vv[i]);
}
return 0;
}
Codeforces 665D Simple Subset【构造】的更多相关文章
- Codeforces 665D Simple Subset [简单数学]
题意: 给你n个数,让你从中选一个子集要求子集中的任何两个数相加都是质数. 思路: 一开始把自己坑了,各种想,后来发现一个简单的性质,那就是两个数相加的必要条件是这两个数之中必定一个奇数一个偶数,(除 ...
- codeforces 665D Simple Subset
题目链接 给一个数列, 让你选出其中的m个数, 使得选出的数中任意两个数之和都为质数, m尽可能的大. 首先, 除了1以外的任意两个相同的数相加结果都不是质数. 然后, 不考虑1的话, 选出的数的个数 ...
- CodeForces - 665D Simple Subset 想法题
//题意:给你n个数(可能有重复),问你最多可以取出多少个数使得任意两个数之和为质数.//题解:以为是个C(2,n)复杂度,结果手摸几组,发现从奇偶性考虑,只有两种情况:有1,可以取出所有的1,并可以 ...
- CodeFores 665D Simple Subset(贪心)
D. Simple Subset time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- Educational Codeforces Round 12 D. Simple Subset 最大团
D. Simple Subset 题目连接: http://www.codeforces.com/contest/665/problem/D Description A tuple of positi ...
- coeforces 665D D. Simple Subset(最大团orsb题)
题目链接: D. Simple Subset time limit per test 1 second memory limit per test 256 megabytes input standa ...
- CodeForces 837D - Round Subset | Educational Codeforces Round 26
/* CodeForces 837D - Round Subset [ DP ] | Educational Codeforces Round 26 题意: 选k个数相乘让末尾0最多 分析: 第i个数 ...
- Codeforces 626E Simple Skewness(暴力枚举+二分)
E. Simple Skewness time limit per test:3 seconds memory limit per test:256 megabytes input:standard ...
- Codeforces 837D Round Subset - 动态规划 - 数论
Let's call the roundness of the number the number of zeros to which it ends. You have an array of n ...
随机推荐
- CPP-基础:内部函数应该在当前源文件中说明和定义
static函数与普通函数作用域不同,仅在本文件.只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义.对于可在当前源文件以外使用的函数,应该在一个头文件 ...
- xampp中php手动升级
http://windows.php.net/download/ //要下载的 里面有dll文件 http://www.php.net/downloads.php VC9 x86 ...
- GIMP里的Path移动,旋转,翻转操作
1/Path的移动: 快捷键Ctrl+Move Tool 2/Path的旋转: 选择Rotate Tool,在Path中选择,出现十字圈. Angel下的滑块调节一定的角度,在合适的位置即可. 3/P ...
- CSS盒模型-box-sizing
CSS中Box model是分为两种,第一种是W3C的标准模型,另一种是IE的传统模型 1.W3C的标准Box Model: /*外盒尺寸计算(元素空间尺寸)*/ Element空间高度 = cont ...
- Day17re模块和hashlib模块
re模块 正则表达式 用一些特殊符号拼凑成的规则,去字符串中匹配到符合规则的东西 为什么有正则表达式 从字符串中取出想要的数据 怎么用正则表达式 re.findall()结果存成列表 \w 匹配一个字 ...
- POJ-1061 青蛙的约会 (扩展欧几里得)
[题目描述] 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有 ...
- PAT Basic 1060
1060 爱丁顿数 英国天文学家爱丁顿很喜欢骑车.据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数” E ,即满足有 E 天骑车超过 E 英里的最大整数 E.据说爱丁顿自己的 E 等于87. 现给 ...
- 电脑连接到手机并安装手机驱动usb-driver
设置真机开发环境需要执行下面几个步骤: 1.在应用的Manifest文件中声明应用是可调试的: 2.打开应用的调试支持: 对于通过Eclipse创建的应用,可以省略步骤2,因为在Eclipse IDE ...
- 【Oracle】使用dblink+minus方式迁移数据
一.需求说明 1.数据库a104的表syssde.a4_syssde_department中有1000条数据: 2.数据库a230的表syssde.a4_syssde_department中有800条 ...
- Visual studio 新建网站出现序号(x)
参考链接: http://www.zhongdaiqi.com/vs2012-new-website-name-bug/ 现象: 分析: VS新建网站出现(1) 这个问题很神秘,把网站删除掉,再创建, ...