BC#65 T5 ZYB's Prime
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5594
完全不会啊TAT。。
其实官方题解已经说的很清楚了。。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <queue>
#include <cmath>
#define rep(i,l,r) for (int i=l;i<=r;i++)
#define down(i,l,r) for (int i=l;i>=r;i--)
#define clr(x,y) memset(x,y,sizeof(x))
#define maxn 405
#define ll long long
#define inf int(1e9)
using namespace std;
int a[maxn],head[maxn],cur[maxn],uu[maxn],odd[maxn],even[maxn];
int tot,t,s;
struct data{int obj,pre,c;
}e[];
int read(){
int x=,f=; char ch=getchar();
while (!isdigit(ch)){ if (ch=='-') f=-; ch=getchar();}
while (isdigit(ch)) {x=x*+ch-''; ch=getchar();}
return x*f;
}
void insert(int x,int y,int z){
e[++tot].obj=y; e[tot].c=z; e[tot].pre=head[x]; head[x]=tot;
e[++tot].obj=x; e[tot].c=; e[tot].pre=head[y]; head[y]=tot;
}
bool bfs(){
queue<int >q; clr(uu,-); uu[s]=; q.push(s);
while (!q.empty()){
int u=q.front(); q.pop();
for (int j=head[u];j;j=e[j].pre){
int v=e[j].obj;
if (uu[v]==-&&e[j].c) uu[v]=uu[u]+,q.push(v);
}
}
if (uu[t]==-) return ;
return ;
}
int dfs(int x,int mx){
if (x==t) return mx;
int used=;
for (int j=cur[x];j;j=e[j].pre){
int v=e[j].obj;
if (uu[v]==uu[x]+){
int w=dfs(v,min(e[j].c,mx-used));
used+=w; e[j].c-=w; e[j^].c+=w;
if (e[j].c) cur[x]=j;
if (used==mx) return mx;
}
}
if (!used) uu[x]=-;
return used;
}
int dinic(){
int ans=;
while (bfs()){
rep(i,s,t) cur[i]=head[i];
ans+=dfs(s,inf);
}
return ans;
}
bool jud(int x){
int s=int(sqrt(x))+;
rep(i,,s) if (x%i==) return ;
return ;
}
bool work(){
tot=; clr(head,); clr(odd,); clr(even,); //clr(one,0);
int odd_cnt=,even_cnt=,one_in=,one_out=,one_cnt=;
int n=read();
rep(i,,n) {
a[i]=read();
if (a[i]>&&(a[i]&)) odd[++odd_cnt]=a[i];
else if (a[i]>&&((a[i]&)==)) even[++even_cnt]=a[i];
else one_cnt++;
}
int need=even_cnt-odd_cnt;
rep(i,,one_cnt){
if (need) {
one_in++;
odd[++odd_cnt]=;
need--;
}
else one_out++;
}
if ((!one_in && (one_out==||one_out==)) || need!=) return ;
s=; t=*odd_cnt+;
int cnt=odd_cnt;
rep(i,,cnt) insert(s,i,);
rep(i,,cnt) insert(i+cnt,t,);
rep(i,,cnt) rep(j,,cnt){
if (jud(odd[i]+even[j])) {
if (odd[i]==&&one_out>) insert(i,j+cnt,);
else insert(i,j+cnt,);
}
}
if (dinic()!=*cnt) return ;
return ;
}
int main(){
int T=read();
while (T--){
if (work()) puts("YES"); else puts("NO");
}
return ;
}
BC#65 T5 ZYB's Prime的更多相关文章
- hdu 5594 ZYB's Prime 最大流
ZYB's Prime Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5 ...
- BC 65 ZYB's Premutation (线段树+二分搜索)
题目简述:有一个全排列,一直每个前缀区间的逆序对数,还原这个排列. fi记录逆序对数,pi记录该位置数值,则k=fi-f(i-1)表示前i-1个数比pi大的数的个数,那么只要在剩余元素求出按大小顺序第 ...
- BestCoder Round #65 (ZYB's Premutation)
ZYB's Premutation Accepts: 220 Submissions: 983 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- BestCoder Round #65 (ZYB's Game)
ZYB's Game Accepts: 672 Submissions: 1207 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- BestCoder Round #65 (ZYB's Biology)
ZYB's Biology Accepts: 848 Submissions: 1199 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 13 ...
- BestCoder Round #65 HDOJ5592 ZYB's Premutation(树状数组+二分)
ZYB's Premutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- BC 65 game
主持人一直某个数字在1到n范围,假设甲乙已经知道,甲先猜乙后,都采用最优策略,主持人说偏大还是偏小,不断缩小范围,问最后乙能会获胜的X的取值的个数. 如果n为奇数,那么仅当x=n/2乙必然获胜,若为奇 ...
- OpenSSL CVE-2022-0778漏洞问题复现与非法证书构造
本文介绍CVE-2022 0778漏洞及其复现方法,并精心构造了具有一个非法椭圆曲线参数的证书可以触发该漏洞. 本博客已迁移至CatBro's Blog,那是我自己搭建的个人博客,欢迎关注.本文链接 ...
- FF D8 FF FE 00 24 47 00转图片
String[] img = "FF D8 FF FE 00 24 47 00 9D 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 0 ...
随机推荐
- iOS开发之Xcode常用调试技巧总结
转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...
- ReactNative 基础学习
安卓Back键的处理·基本+高级篇 http://bbs.reactnative.cn/topic/480/%E5%AE%89%E5%8D%93back%E9%94%AE%E7%9A%84%E5%A4 ...
- 探索C++对象模型
只说C++对象模型在内存中如何分配这是不现实的,所以这里选择VS 2013作为调试环境具体探讨object在内存中分配情况.目录给出了具体要探讨的所有模型,正文分标题依次讨论.水平有限,如有错误之处请 ...
- linux下增加磁盘改变指定文件路径分区挂载点和迁移数据
Centos7 系统上原有目录/data 挂载根目录下,空间有点小,我们需要把/data目录挂载到另一个磁盘,同时把数据迁移. 1.查看分区情况 fdisk -l 2.查看路径对应分区情况 df -l ...
- UVA 10891 Game of Sum
题目大意就是有一个整数串,有两个人轮流取,每次可以取走一个前缀或后缀.两人都足够聪明,且都会使自己收益最大.求取完后先手比后手多多少. 每次我看见上面那句就会深感自己的愚笨无知. 所以来推推性质? 1 ...
- cat/tac/more/less 命令详解
cat:(http://www.cnblogs.com/peida/archive/2012/10/30/2746968.html) *cat主要有三大功能:1.一次显示整个文件:cat filena ...
- jmeter通过org.sqlite.JDBC驱动连接db数据库
最近遇到个项目,默认业务库为内置db数据库,在性能脚本编辑过程中要通过正则表达式提取器(关联)获取对应的id号,通过该id号到db数据库中查找对应的数据源name字段内容,为下一个post请求做par ...
- Linux下jira自启动设置
jira 的启动主要依靠的是bin目录下的catalina.sh脚本,提供了如init脚本的start,stop等参数----------------------------------------- ...
- 总结oninput、onchange与onpropertychange事件的用法和区别
前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...
- sql优化原则与技巧
加快sql查询是非常重要的技巧,简单来说加快sql查询的方式有以下几种:一.索引的引用 1.索引一般可以加速数据的检索速度,加速表与表之间的链接,提高性能,所以在对海量数据进行处理时,考虑到信息量比较 ...