时间限制:2000ms
单点时限:1000ms
内存限制:256MB

描述

两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数。一个集合S被称为质数相关,是指S中存在两个质数相关的数,否则称S为质数无关。如{2, 8, 17}质数无关,但{2, 8, 16}, {3, 6}质数相关。现在给定一个集合S,问S的所有质数无关子集中,最大的子集的大小。

输入

第一行为一个数T,为数据组数。之后每组数据包含两行。

第一行为N,为集合S的大小。第二行为N个整数,表示集合内的数。

输出

对于每组数据输出一行,形如"Case #X: Y"。X为数据编号,从1开始,Y为最大的子集的大小。

数据范围

1 ≤ T ≤ 20

集合S内的数两两不同且范围在1到500000之间。

小数据

1 ≤ N ≤ 15

大数据

1 ≤ N ≤ 1000

样例输入
3
5
2 4 8 16 32
5
2 3 4 6 9
3
1 2 3
样例输出
Case #1: 3
Case #2: 3
Case #3: 2

编程之美2015初赛第一场第三题,找二分图的最大独立集,大小为:点的个数 - 最大匹配。

 #include <bits/stdc++.h>
using namespace std; int T, N;
vector<int> v;
vector<vector<int>> graph;
vector<int> link;
vector<bool> visited;
bool *isPrime; void getPrime() {
isPrime = new bool[];
memset(isPrime, true, sizeof(bool) * );
isPrime[] = isPrime[] = false;
for (int i = ; i * i < ; ++i) if (isPrime[i]) {
for (int j = ; i * j < ; ++j) isPrime[i * j] = false;
}
} int dfs(int u) {
for (auto v : graph[u]) if (!visited[v]) {
visited[v] = true;
if (link[v] == - || dfs(link[v])) {
link[v] = u;
return ;
}
}
return ;
} int hungary() {
int res = ;
for (int i = ; i < N; ++i) {
visited.assign(N + , false);
res += dfs(i);
}
return res / ;
} int main() {
getPrime();
cin >> T;
for (int t = ; t <= T; ++t) {
cin >> N;
v.resize(N);
for (int i = ; i < N; ++i) {
cin >> v[i];
}
sort(v.begin(), v.end());
graph.assign(N + , vector<int>());
link.assign(N + , -);
for (int i = ; i < N - ; ++i) {
for (int j = i + ; j < N; ++j) {
if (v[j] % v[i] == ) {
int tmp = v[j] / v[i];
if (isPrime[tmp]) {
graph[i].push_back(j);
graph[j].push_back(i);
}
}
}
}
cout << "Case #" << t << ": ";
int res = hungary();
cout << N - res << endl;
}
return ;
}

最新文章

  1. dom 无法找到 body节点问题
  2. 99%的人都理解错了HTTP中GET与POST的区别
  3. error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
  4. 比较全的JavaScript倒计时脚本[xyytit]
  5. strtr函数的用法
  6. javase基础笔记4——异常/单例和类集框架
  7. IE11企业模式介绍及可用性评估
  8. [转载] linux下打开windows txt文件中文乱码问题
  9. PHP基本知识
  10. C语言 文件操作8--fputs()和fgets()
  11. SELinux入门
  12. Python学习总结15:时间模块datetime &amp; time &amp; calendar (二)
  13. x86, x86-64, i386, IA32, IA64...
  14. iOS学习之网易新闻简易Demo
  15. springMVC servlet 静态资源加载
  16. CSS小全
  17. 开发人员必备工具 —— JMeter 压测
  18. 如何用sysbench做好IO性能测试
  19. MyBatis:参数传递 [转]
  20. Win10系统中VirtualBox桥接时找不到网卡的问题

热门文章

  1. VC操作MPP文件
  2. 关于ARM立即数的理解
  3. Android Studio怎样加入工程(project)为library(针对非gradle)
  4. SQL Sever 2008配置工具中过程调用失败解决方法
  5. MySQL 设置慢查询为200ms
  6. ubuntu 下安装摄像头驱动
  7. ORA-14402:更新分区关键字列将导致分区更改(分区表注意)
  8. windows彻底删除Oralce
  9. java 生成可执行jar包
  10. TabLayout实现顶部导航(一)