/*
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. POJ 1166 The Clocks (暴搜)

    发现对这样的模拟题根本没啥思路了,本来准备用bfs的.可是结果超时了,这是參考别的人代码写的: #include <stdio.h> #include <iostream> # ...

  2. GammaRay 是一个允许你查看 Qt 应用程序甚至在某种程度上修改它的独特应用,可谓是 Debugger 的良好补充

    GammaRay is a tool to poke around in a Qt-application and also to manipulate the application to some ...

  3. VS2013+ffmpeg开发环境搭建-->【转】

    本文转载自:http://blog.csdn.net/qq_28425595/article/details/51488869 版权声明:本文为博主原创文章,未经博主允许不得转载. 今天整理资料时,发 ...

  4. Android.mk宏定义demo【转】

    本文转载自:http://blog.csdn.net/u010164190/article/details/72783963 1.Android.mk  LOCAL_PATH := $(call my ...

  5. Linux - 设置SFTP服务用户目录权限

    我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 创建新用户www ...

  6. libhiredis.so.0.13 => not found 缺少

    wget https://github.com/redis/hiredis/archive/v0.13.3.tar.gz tar -xzvf v0.13.3.tar.gz cd hiredis- ma ...

  7. php navigat备份

    点击查询->新建查询->写sql查询出更新的数据部分(根据时间等条件) -> 点击上方工具菜单栏的导出向导 ,然后就可以根据选择导出文件了可以导出sql脚本excel等很多,绝对有你 ...

  8. mysql 登录与权限

    一.mysql 登录方式 1.1 格式:mysql -u用户名 -p密码 -h ip -P 端口 -S 套接字 mysql -uvagrant -pvagrant -h 127.0.0.1 -P 33 ...

  9. css3 边框、背景、文本效果

    浅玩CSS3 边框.背景.文本效果 一.边框 box-shadow box-shadow: h-shadow v-shadow blur spread color inset(ontset); //h ...

  10. Three.js入门——画星空(star field)

    Three.js是一个很流行的3D JavaScript库.这里有一个three.js的入门教程,在浏览器窗口中画出星空.我按照教程重新实现了一遍,这里的这篇博客把教程大致翻译了一遍.我的demo. ...