https://loj.ac/problem/526

题目描述

qmqmqm有一个长为 n 的数列 a1,a2,……,an,你需要选择集合{1,2,……,n}的一个子集,使得这个子集中任意两个元素 i,j 均满足条件 gcd(ai,aj)×gcd(ai+1,aj+1)≠1,其中gcd(i,j)表示最大公约数,且这个子集的元素个数是所有满足上述条件的子集中最多的。输出这个子集的元素个数。

输入格式

输入的第一行包含一个正整数nnn。 随后nnn行,每行一个正整数aia_ia​i​​。

输出格式

输出一个整数代表符合条件的元素最多的子集的元素个数。

样例

样例输入1

4
4
6
1
9

样例输出1

3

样例解释

选择的子集为{1,2,4}\{1,2,4\}{1,2,4}。

样例输入2

41
71
3
5
50
75
2
19
47
88
95
92
110
111
117
58
124
130
57
129
168
161
29
39
206
79
10
142
107
209
210
222
221
223
242
104
264
265
202
279
314
315

样例输出2

22

奇数和奇数、偶数和偶数一定可以选在一起
所以对于不满足条件的奇数和偶数,连边
求最大点独立集
即点数-匹配数
#include<cstdio>
#include<iostream>
#define N 501
using namespace std;
typedef long long LL;
int n;
LL a[N],b[N];
bool g[N][N],vis[N];
int match[N];
void read(int &x)
{
x=; int f=; char c=getchar();
while(!isdigit(c)) { if(c=='-') f=-; c=getchar(); }
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
x*=f;
}
void read(LL &x)
{
x=; int f=; char c=getchar();
while(!isdigit(c)) { if(c=='-') f=-; c=getchar(); }
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
x*=f;
}
inline LL gcd(LL p,LL q) { return !q ? p : gcd(q,p%q); }
bool go(int now)
{
for(int i=;i<=b[];i++)
{
if(vis[i] || !g[now][i]) continue;
vis[i]=true;
if(!match[i] || go(match[i]))
{
match[i]=now;
return true;
}
}
return false;
}
int main()
{
read(n);
LL x;
for(int i=;i<=n;i++)
{
read(x);
(x& ? a[++a[]] : b[++b[]])=x;
}
for(int i=;i<=a[];i++)
for(int j=;j<=b[];j++)
if(gcd(a[i],b[j])== && gcd(a[i]+,b[j]+)==) g[i][j]=true;
int sum=;
for(int i=;i<=a[];i++)
{
fill(vis+,vis+b[]+,);
if(go(i)) sum++;
}
printf("%d",n-sum);
}


最新文章

  1. 初试Node —— node.js的安装
  2. eclipse中tomcat能正常启动,但是浏览器访问不了tomcat首页
  3. 夺命雷公狗ThinkPHP项目之----企业网站9之栏目的列表完善(无限极分类的完成)
  4. IOS game
  5. astyle代码格式化
  6. HeaderViewListAdapter
  7. Mysql 配置慢查询日志(SlowQueryLog)以及使用日志分析工具
  8. 如何使用OLAMI自然语言理解开放平台API制作自己的智能对话助手小程序
  9. mybatis ---- 级联查询 一对多 (集合映射)
  10. JavaScript路线
  11. 洛谷P4592 [TJOI2018]异或(可持久化01Trie)
  12. ZIP解压缩工具类
  13. linux按键映射
  14. 安装配置Windows Live Writer做为博客客户端
  15. query简洁弹出层代码
  16. 20155332 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉
  17. Java 基础(7)——运算符
  18. 基于jQuery的2048小游戏设计(网页版)
  19. 自定义admin
  20. hdu5386(暴力)

热门文章

  1. MacBook Pro 15寸常见问题及修复
  2. 2018软工实践—Alpha冲刺(7)
  3. 博弈---尼姆博奕(Nimm Game)(重点)
  4. springboot+vue+element:echarts开发遇见问题---vue前端(二)
  5. 玩下软工项目,第一轮--全局Context的获取,SQLite的建立与增删改查,读取用户通话记录信息
  6. MySQL 日志功能详解
  7. 【beta】视频预发布
  8. ubuntu下搭建openGL环境
  9. HDU2993_MAX Average Problem
  10. Linux进入单用户模式(passwd root修改密码)