BJFU 质数相关
/*
BJFU 质数相关
http://101.200.220.237/contest/19/problem/116/
二分图
按质因数奇偶性建立二分图
*
*
*/
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
#include <queue>
//#define test
using namespace std;
const int Nmax=;
int n;
int num[Nmax];
int s1[Nmax];
int s2[Nmax];
int cnt1;
int cnt2;
int match[Nmax];
int book[Nmax];
int is_prime[Nmax];
int prime[Nmax];
int prime_cnt;
vector<int> v1[Nmax],v2[Nmax];
int is(int n)
{
int ans=;
for(int i=;i<=prime_cnt;i++)
{
if(prime[i]>n)
break;
if(n%prime[i]==)
{
while(n%prime[i]==)
{
ans++;
n/=prime[i];
}
}
} //if(is_prime[n])
//return 1;
//for(int i=2;i*i<=n;i++)
//{
//while(n%i==0)
//{
//ans++;
//n/=i;
//}
//}
return ans&;
} int dfs(int v)
{
for(int i=;i<v1[v].size();i++)
{
int u=v1[v][i];
if(book[u])
continue;
book[u]=;
if(match[u]==- || dfs(match[u]))
{
match[u]=v;
return ;
}
}
return ;
} void init()
{
for(int i=;i<=cnt1;i++)
v1[i].clear();
for(int i=;i<=cnt2;i++)
v2[i].clear();
for(int i=;i<=cnt1;i++)
{
for(int j=;j<=cnt2;j++)
{
if(s1[i]%s2[j]== && is_prime[s1[i]/s2[j]])
{
v1[i].push_back(j);
v2[j].push_back(i);
}
else if(s2[j]%s1[i]== && is_prime[s2[j]/s1[i]])
{
v1[i].push_back(j);
v2[j].push_back(i);
}
}
}
for(int i=;i<=cnt2;i++)
match[i]=-;
} void get_prime()
{
for(int i=;i<Nmax;i++)
is_prime[i]=;
for(int i=;i<Nmax;i++)
if(is_prime[i])
{
prime[++prime_cnt]=i;
for(int j=;j*i<Nmax;j++)
is_prime[i*j]=;
}
} int main()
{
#ifdef test
freopen("6.test.in","r",stdin);
#endif
int t;
scanf("%d",&t);
get_prime();
for(int ttt=;ttt<=t;ttt++)
{
printf("Case #%d: ",ttt);
scanf("%d",&n);
cnt1=cnt2=;
for(int i=;i<=n;i++)
{
scanf("%d",&num[i]);
if(num[i]==)
{
s2[++cnt2]=num[i];
continue;
}
if(is(num[i]))
s1[++cnt1]=num[i];
else
s2[++cnt2]=num[i];
}
#ifdef tesst
for(int i=;i<=cnt1;i++)
printf("%d ",s1[i]);
printf("\n");
for(int j=;j<=cnt2;j++)
printf("%d ",s2[j]);
printf("\n");
#endif
init();
int ans=;
for(int i=;i<=cnt1;i++)
{
for(int j=;j<=cnt2;j++)
book[j]=;
if(dfs(i))
ans++;
}
printf("%d\n",n-ans);
}
return ;
}
BJFU 质数相关的更多相关文章
- [hihoCoder] #1158 : 质数相关
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被称为质数相关,是指S中 ...
- 2015编程之美 初赛第一场C题 质数相关 二分图的最大匹配
质数相关 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/contest/msbop2015round2a/prob ...
- HihoCoder 1158 : 质数相关 (最大独立集)
质数相关 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被称为质数相关 ...
- POJ中和质数相关的三个例题(POJ 2262、POJ 2739、POJ 3006)
质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数. 最小的质数 ...
- Codeforces 548E Mike ans Foam (与质数相关的容斥多半会用到莫比乌斯函数)
题面 链接:CF548E Description Mike is a bartender at Rico's bar. At Rico's, they put beer glasses in a sp ...
- 20160127.CCPP体系详解(0006天)
程序片段(01):msg.c 内容概要:线程概念 #include <stdio.h> #include <stdlib.h> #include <Windows.h&g ...
- [2015编程之美] 第一场C
题目3 : 质数相关 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被 ...
- Noip数学整理
目录 Noip数学整理 序 1 取模相关 2 质数相关 3.基本操作 4.方程相关 5.数列相关 6.函数相关 Noip数学整理 序 因为某些原因, Noip对于数学方面的考纲仅停留在比较小的一部分, ...
- Noip知识点备考
作为一个oier,适当的整理是有必要的.蒟蒻根据自己的理解,筛选出考noip应当掌握的知识点.可能后期还有解题思路和模板,先挖个坑慢慢补呗. 60级张炳琪Noip知识点总结 可能是本人比较弱,写的内容 ...
随机推荐
- NSAttributedString宽高计算小技巧
通常对于CoreText之类自己实现绘制的控件来说,计算富文本的宽高事实上须要依赖CTFramesetterSuggestFrameSizeWithConstraints这种方法. 但有些时候.我们可 ...
- Java深入 - Filter过滤器
Java的1.3開始,对servlet2.3规范中增加了过滤器的支持.过滤器可以让我们对目标资源的请求和响应进行截取. 一些filter的特性: 1. Filter是Servlet规范的规定,须要Se ...
- Linux下安装JRE和Eclipse IDE for C/C++ Developers
Linux32位,下载eclipse-cpp-luna-R-linux-gtk.tar.gz和jre-8u11-linux-i586.rpm 放到家文件夹中. http://www.eclipse. ...
- Ubuntu安装及ubuntu系统使用菜岛教程
Ubuntu是一款广受欢迎的开源Linux发行版,和其他Linux操作系统相比,Ubuntu非常易用,和Windows相容性很好,非常适合Windows用户的迁移,在其八年的成长过程中已经获得了两千多 ...
- 网页设计——Dreamweaver
在看ASP.NET视频时,讲到了一款编写HTML代码的软件--Dreamweaver.它是一款专门进行网页设置的软件.通过它能够设计出多彩的界面,相对于vs中自带的设计方式来说,他不须要知道太多的技术 ...
- Linux - 虚拟机中的三种网络连接,桥接、NAT、Host-only详解
虚拟机中的三种网络连接 1.桥接 2.NAT 3.Host-only 桥接方便做实验,配置ip方便.可以和局域网中的其他机器进行通信,也可以和公网进行通信.缺点是会占用一个ip. NAT,可以和主机进 ...
- hdoj-- Walking Ant
Walking Ant Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total S ...
- [.Net] C# Excel操作类 ExcelHelper
实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...
- WinSocket聊天程序实例(多线程)
#pragma comment(lib,"Ws2_32.lib") #include <stdio.h> #include <Winsock2.h> SOC ...
- C - Queue at the School
Problem description During the break the schoolchildren, boys and girls, formed a queue of n people ...