[BZOJ 4857][Jsoi2016]反质数序列
$ \color{green} {solution : } $
因为 $ 1 $ 的个数我们最多只能选一个,所以剩下的数如果组成素数那么只有一奇一偶,显然是个二分图模型
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000010, inf = 0x3f3f3f3f;
int head[maxn], to[maxn << 1], v[maxn << 1], pos[maxn << 1], p;
inline void build(int a, int b, int c) {
v[++ p] = b; to[p] = head[a]; head[a] = p; pos[p] = c;
}
int dis[maxn], cur[maxn], s, t;
queue<int> tp;
bool bfs() {
memset(dis, 0, sizeof(dis)); dis[s] = 1; tp.push(s);
while ( !tp.empty()) {
int u = tp.front(); tp.pop();
for ( int i = head[u]; ~i; i = to[i])
if( !dis[v[i]] && pos[i])
dis[v[i]] = dis[u] + 1, tp.push(v[i]);
}
for ( int i = s; i <= t; ++ i) cur[i] = head[i];
return dis[t] != 0;
}
int dfs(int u, int f) {
if( !f || u == t) return f;
int flow = 0;
for ( int &i = cur[u]; ~i; i = to[i])
if( dis[v[i]] == dis[u] + 1){
int k = dfs(v[i], min(f, pos[i]));
if( k) {
pos[i] -= k; pos[i ^ 1] += k;
flow += k; f -= k;
if( !f) return flow;
}
}
return flow;
}
int max_flow() {
int ret = 0;
while ( bfs()) ret += dfs(s, inf);
return ret;
}
int prim[maxn], book[maxn], vl[maxn], cnt[maxn], tot, n;
int main() {
#ifndef ONLINE_JUDGE
freopen("2.in", "r", stdin);
#endif
memset(head, -1, sizeof(head)); p = -1;
scanf("%d", &n);
for ( int i = 1; i <= n; ++ i) scanf("%d", vl + i);
sort(vl + 1, vl + 1 + n);
int op = 1;
for ( int i = 1; i <= n; ++ i) {
if( vl[i] != vl[op]) vl[++ op] = vl[i];
++ cnt[op];
}
n = op; if( vl[1] == 1) cnt[1] = 1;
s = 0; t = n + 1;
for ( int i = 2; i <= (vl[n] << 1); ++ i) {
if( !book[i]) prim[++ tot] = i;
for ( int k = 1; k <= tot; ++ k) {
if( i * prim[k] > (vl[n] << 1)) break;
book[i * prim[k]] = 1;
if( i % prim[k] == 0) break;
}
}
int ret = 0;
for ( int i = 1; i <= n; ++ i) {
ret += cnt[i];
if( vl[i]&1) {
build(s, i, cnt[i]), build(i, s, 0);
for ( int k = 1; k <= n; ++ k) if( !book[vl[i]+vl[k]])
build(i, k, inf), build(k, i, 0);
}
else build(i, t, cnt[i]), build(t, i, 0);
}
printf("%d\n", ret - max_flow());
return 0;
}

[BZOJ 4857][Jsoi2016]反质数序列的更多相关文章
- [BZOJ4857][JSOI2016]反质数序列[最大点独立集]
题意 在长度为 \(n\) 的序列 \(a\) 中选择尽量长的子序列,使得选出子序列中任意两个数的和不为质数. \(n\leq3000\ ,a_i\leq10^5\). 分析 直接按照奇偶性建立二分图 ...
- [JSOI2016]反质数序列
我竟然半个小时切了一道JSOI2016,,,,不敢相信. 首先可以发现,如果N个数中1出现的次数<=1的话,我们按不能在一个集合连无向边的话,连出的一定是一个二分图. 接下来我来证明一下: 因为 ...
- BZOJ 4857 反质数序列
题面 奇数+奇数一定不是质数(1+1除外),偶数+偶数一定不是质数,质数只可能出现在偶数+奇数中 把所有的点排成两列,权值为奇数的点在左边,权值为偶数的在右边 如果左边的点x+右边的点y是质数,我们就 ...
- 【LOJ】#2081. 「JSOI2016」反质数序列
题解 我居然都没反应过来二分图内选集合两两不能有边是最大独立集了 我退役吧 显然连边只能在奇数和偶数之间,然后二分图求最大独立集是节点数-最大匹配数 啊当然还有对于1的话只能留一个1 代码 #incl ...
- bzoj:3085: 反质数加强版SAPGAP
Description 先解释一下SAPGAP=Super AntiPrime, Greatest AntiPrime(真不是网络流),于是你就应该知道本题是一个关于反质数(Antiprime)的问题 ...
- BZOJ 4753 [Jsoi2016]最佳团体 | 树上背包 分数规划
BZOJ 4753 [Jsoi2016]最佳团体 | 树上背包 分数规划 又是一道卡精度卡得我头皮发麻的题-- 题面(--蜜汁改编版) YL大哥是24OI的大哥,有一天,他想要从\(N\)个候选人中选 ...
- BZOJ1053 [HAOI2007]反素数 & BZOJ3085 反质数加强版SAPGAP
BZOJ 1053 Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x ,则称x ...
- CNUOJ 0486 800401反质数
难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 将正整数 x 的约数个数表示为 g(x).例如,g(1)=1,g(4)=3, g ...
- 反质数问题,求不大于n的最大反质数
反质数:设f(n)表示n个约数的个数,如果对于任意x有0<x<n, f(x) < f(n),那么n就是一个反质数 我们都知道对于任意一个数n,都可以用质数乘积的形式表示出来:x = ...
随机推荐
- linux环境下搭建osm_web服务器一(Postgresql配置及osm2pgsql原始数据导入):
Postgresql配置及osm2pgsql原始数据导入 2012年,Ubuntu 12.04LTS发布,又一个长效支持版,我们又该更新OpenStreetMap服务器了,这次,将详细在博客中记录配置 ...
- array_column()
array_column($arr,value) 返回输入数组中某个单一列的值. array_column($arr,value,key) 返回输入数组中某个单一列的值,value是值,key是键.
- VWAP算法(成交量加权平均价)
算法交易其实主要是用在基金公司.券商量化比较多.例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完成买入100万股这些的操作是有点的困难的.那么这时候怎样解决拆单,防止冲击成本的问题呢? ...
- 浏览器透明设置例子,qt5.6才支持
用simpleBrowser例子的基础上,在BrowserWindow构造函数修改如下 BrowserWindow::BrowserWindow(QWidget *parent, Qt::Window ...
- 大前端涉猎之前后端交互总结3:使用PHP进行表单数据删除与查询
1 首先:获取用户 id,根据id 删除指定的数据. 在链接完数据库之后,通过$_GET 超全局变量,获取删除的书内容 $id = $_GET['id']; 2 准备delete SQL语句: $sq ...
- javascript总结40:DOM中操作样式的两种方式
1 DOM中操作样式的两种方式 1 通过元素的style属性 注意: 通过style属性设置样式时,css中要写单位的属性,在js代码中也要加单位 //html <div id="bo ...
- SpringMVC源码解读 - HandlerMapping - AbstractUrlHandlerMapping系列request分发
AbstractHandlerMapping实现HandlerMapping接口定的getHandler 1. 提供getHandlerInternal模板方法给子类实现 2. 如果没有获取Handl ...
- CodeForces 227E Anniversary (斐波那契的高妙性质+矩阵快速幂)
There are less than 60 years left till the 900-th birthday anniversary of a famous Italian mathemati ...
- 记一次阿里云linux病毒清理过程
1.起因 因为这台服务器是我们公司内部开发服务器,几乎每个人都有root密码.在两天前突然有同事反馈说偶尔会有ssh连不上,git代码无法提交的问题,刚开始也没有在意,以为是阿里云服务器网络波动的 ...
- 13 Amazing Component Sets Driving Success In Delphi Berlin On Android And IOS
There are quite a few Firemonkey component sets available for Delphi Berlin which can get you ahead ...