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知识点总结 可能是本人比较弱,写的内容 ...
随机推荐
- oc08--局部变量,全局变量,函数方法的区别
// // main.m // 局部变量和全局变量以及成员变量的区别 #import <Foundation/Foundation.h> @interface Person : NSObj ...
- Windows 10彻底关闭自动更新
关键点:把流量计费开启.
- global cache cr request
当一个进程访问需要一个或者多个块时,它会首先检查自己的CACHE是否存在该块,如果发现没有,就会先通过global cache赋予这些块 共享访问的权限,然后再访问.假如,通过global cache ...
- 【POJ 4007】 Flood-it!
[题目链接] http://poj.org/problem?id=4007 [算法] IDA* [代码] #include <algorithm> #include <bitset& ...
- Python中的traceback模块
traceback模块被用来跟踪异常返回信息. 如下例所示: 1.直接打印异常信息 import traceback try: raise SyntaxError, "traceback t ...
- 随时随地日志Debug
对于一个应用程序而言,Log必不可少,但是有些时候仅仅想看下输出,如果加log的话就显得比较麻烦,这个时候就用到了Debug.WriteLine("测试下,你好,非常棒,牛叉!") ...
- python基本数据类型之元祖tuple
元祖tuple 是对列表的二次加工,书写格式为括号(),里面放元素 元组的一级元素不可被修改,且不能被增加和删除 一般写元组的时候,推荐在最后加入逗号, 能加则加 创建元组 ? 1 tu = (11 ...
- Java Socket通讯---网络基础
java socket 通讯 参考慕课网:http://www.imooc.com/learn/161 一.网络基础知识 1.1 通讯示意图 1.2 TCP/IP协议 TCP/IP是世界上应用最为广泛 ...
- 一个简单的js面试题
在js群里看到有人发问,于是抱着练手的心态写了答了几个面试题,题目虽然不是太难,却很考验人的编程思维.汗颜,看了别人的答案后才发现自己好像笨了很多. 废话不说了 ,上代码. 1 要求 给一个数组的最后 ...
- react拼接class&将JS标签转换为HTML
1.在JS中混杂字符和HTML标签,识别方法: const menuList = ['门店', '星享俱乐部', '菜单', '<hr></hr>', '星巴克移动应用', ' ...