【NOIP2016提高A组集训第3场10.31】高维宇宙
2016-11-26 15:53
411 查看
题解
分析
因为只有奇数和偶数配对才有可能得出质数,暴力求出每一对ai+aj为质数,将其中的奇数想偶数连一条边。
二分图匹配,匈牙利算法。
#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 ,pt[N*N],used[N*N],b ,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; }
相关文章推荐
- 【NOIP2016提高A组集训第3场10.31】高维宇宙
- 高维宇宙 【NOIP2016提高A组集训第3场10.31】
- 【JZOJ4832】【NOIP2016提高A组集训第3场10.31】高维宇宙
- 方程式 【NOIP2016提高A组集训第3场10.31】
- 【NOIP2016提高A组集训第3场10.31】方程式
- 【JZOJ4833】【NOIP2016提高A组集训第3场10.31】Mahjong
- 【JZOJ4831】【NOIP2016提高A组集训第3场10.31】方程式
- 【NOIP2016提高A组集训第9场11.7】平均数
- NOIP2016提高A组集训第12场11.10 总结
- 【NOIP2016提高A组集训第14场11.12】最长公共回文子序列
- 【NOIP2016提高A组集训第14场11.12】随机游走
- 【JZOJ4855】【NOIP2016提高A组集训第6场11.3】荷花池塘
- JZOJ4859. 【NOIP2016提高A组集训第7场11.4】连锁店
- JZOJ4882. 【NOIP2016提高A组集训第12场11.10】多段线性函数
- 【JZOJ4884】【NOIP2016提高A组集训第12场11.10】图的半径
- 【NOIP2016提高A组集训第13场11.11】最大匹配
- 【JZOJ 5438】【NOIP2017提高A组集训10.31】Tree
- JZOJ 5438. 【NOIP2017提高A组集训10.31】Tree
- JZOJ 4841【NOIP2016提高A组集训第4场】平衡的子集
- JZOJ4867【NOIP2016提高A组集训第8场11.5】心理学概论