/*
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 质数相关的更多相关文章

  1. [hihoCoder] #1158 : 质数相关

    时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被称为质数相关,是指S中 ...

  2. 2015编程之美 初赛第一场C题 质数相关 二分图的最大匹配

    质数相关 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://hihocoder.com/contest/msbop2015round2a/prob ...

  3. HihoCoder 1158 : 质数相关 (最大独立集)

    质数相关 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被称为质数相关 ...

  4. POJ中和质数相关的三个例题(POJ 2262、POJ 2739、POJ 3006)

    质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数.      最小的质数 ...

  5. 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 ...

  6. 20160127.CCPP体系详解(0006天)

    程序片段(01):msg.c 内容概要:线程概念 #include <stdio.h> #include <stdlib.h> #include <Windows.h&g ...

  7. [2015编程之美] 第一场C

    题目3 : 质数相关 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被 ...

  8. Noip数学整理

    目录 Noip数学整理 序 1 取模相关 2 质数相关 3.基本操作 4.方程相关 5.数列相关 6.函数相关 Noip数学整理 序 因为某些原因, Noip对于数学方面的考纲仅停留在比较小的一部分, ...

  9. Noip知识点备考

    作为一个oier,适当的整理是有必要的.蒟蒻根据自己的理解,筛选出考noip应当掌握的知识点.可能后期还有解题思路和模板,先挖个坑慢慢补呗. 60级张炳琪Noip知识点总结 可能是本人比较弱,写的内容 ...

随机推荐

  1. JS计算两时间的天数

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body>& ...

  2. 《linux 内核全然剖析》 笔记 CODE_SPACE 宏定义分析

    在memory.c里面.遇到一个宏定义,例如以下: #define CODE_SPACE(addr) ((((addr)+4095)&~4095) < \ current->sta ...

  3. 【CSS】CSS画矩形、圆、半圆、弧形、半圆、小三角、疑问框

    在网页中,常常会用到各种Icon,假设老是麻烦设计狮画出来不免有些不好意思,所以有时候我们也能够用CSS写出各种简单的形状.一来能够减轻他们的负担,二来也能够使用CSS替代图片.提高载入速度. 在网页 ...

  4. Tomcat启动时项目反复载入,导致资源初始化两次的问题

    近期在项目开发測试的时候,发现Tomcat启动时项目反复载入,导致资源初始化两次的问题  导致该问题的解决办法: 例如以下图:在Eclipse中将Server Locations设置为"Us ...

  5. 复制DropDownList

    DropDownList ddlA; ListItem[] ar = new ListItem[ddlB.Items.Count]; ddlB.Items.CopyTo(ar,0); ddlA.Dat ...

  6. '无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称' 或 'vue不是内部或外部命令' 的解决方法

    如果在使用 vue 初始化项目的时候提示: vue : 无法将“vue”项识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次. 或者: ...

  7. 2-1 Restful中HTTP协议介绍

    Restful是一种基于资源的软件架构风格,所以从定义上来说是跟HTTP无关的.但是本课程提到的Restful API是基于HTTP协议的一种实现.所有相关知识都是基于现有的HTTP协议而来,并没有对 ...

  8. QlikSense移动端使用攻略

    公司内部署QlikSense服务器,除了在电脑上用浏览器访问,也可以在移动端进行访问. 移动端访问在如下网址有英文详细介绍:https://community.qlik.com/docs/DOC-19 ...

  9. C++ 类型转换操作与操作符重载 operator type() 与 type operator()

    类型转换操作符(type conversion operator)是一种特殊的类成员函数,它定义将类类型值转变为其他类型值的转换.转换操作符在类定义体内声明,在保留字 operator 之后跟着转换的 ...

  10. Windows Server2008上安装VS2008出错及解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 win server 2008安装vs2008后报错,如下图: 然后到网上找了一种解决办法: (1)打开服务器管理器 ...