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