【NOIP2016提高A组集训第3场10.31】高维宇宙
2024-09-05 17:10:12
题解
分析
因为只有奇数和偶数配对才有可能得出质数,
暴力求出每一对\(a_i+a_j\)为质数,将其中的奇数想偶数连一条边。
二分图匹配,匈牙利算法。
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const int mo=1000000007;
const int N=45;
using namespace std;
int n,a[N],pt[N*N],used[N*N],b[N][N],ans;
int find(int x)
{
if(used[x]) return 0;
used[x]=1;
for(int i=1;i<=b[x][0];i++)
{
if(pt[b[x][i]]==0 || find(pt[b[x][i]]))
{
pt[b[x][i]]=x;
return 1;
}
}
return 0;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i!=j)
{
bool q=true;
for(int k=2;k<=sqrt(a[i]+a[j])+1 && q;k++)
{
if((a[i]+a[j])%k==0) q=false;
}
if(q) b[i][++b[i][0]]=j;
}
for(int i=1;i<=n;i++)
if(a[i]%2)
{
memset(used,0,sizeof(used));
ans+=find(i);
}
cout<<ans<<endl;
}
最新文章
- android studio 代理配置
- 《深入理解Spark:核心思想与源码分析》一书正式出版上市
- 关闭log4j 输出 DEBUG org.apache.commons.beanutils.*
- 水灾(sliker.cpp/c/pas) 1000MS 64MB
- 【linux】Cache和Buffer的区别
- 关于Spring中AOP的理解
- 网站被百度和google封了,怎么办?
- xpages的comboBox能够手动输入
- sql编程 &;&; 存储过程
- JDBC连接池(三)DBCP连接池
- 计算机17-1,2作业D
- flask保存 文件到本地
- poi读取excel内容工具类
- excel之导出
- Images之Dockerfile中的命令2
- A*与IDA*
- Android7.0新特性,及Android N适配
- DSOFramer 控件修改成功
- linux: cmake(未完,待更新)
- C#获取当前程序集的完整路径
热门文章
- 前端,后端,UI,UE,UX,区别到底在哪里?
- 微信小程序 解析html格式内容
- CentOS7之root密码破解
- multiplication_puzzle(区间dp)
- homestead安装swoole扩展
- “laravel.log” could not be opened: failed to open stream
- C - 卿学姐与诡异村庄(并查集+One face meng bi)
- 数据库中的round()
- 微信小程序与内嵌webview之间来回跳转的几点总结,以及二维码的使用
- G1 垃圾收集器之对象分配过程