题目:http://acm.hdu.edu.cn/showproblem.php?pid=5594

完全不会啊TAT。。

其实官方题解已经说的很清楚了。。

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <iostream>
  5. #include <cstdlib>
  6. #include <queue>
  7. #include <cmath>
  8. #define rep(i,l,r) for (int i=l;i<=r;i++)
  9. #define down(i,l,r) for (int i=l;i>=r;i--)
  10. #define clr(x,y) memset(x,y,sizeof(x))
  11. #define maxn 405
  12. #define ll long long
  13. #define inf int(1e9)
  14. using namespace std;
  15. int a[maxn],head[maxn],cur[maxn],uu[maxn],odd[maxn],even[maxn];
  16. int tot,t,s;
  17. struct data{int obj,pre,c;
  18. }e[];
  19. int read(){
  20. int x=,f=; char ch=getchar();
  21. while (!isdigit(ch)){ if (ch=='-') f=-; ch=getchar();}
  22. while (isdigit(ch)) {x=x*+ch-''; ch=getchar();}
  23. return x*f;
  24. }
  25. void insert(int x,int y,int z){
  26. e[++tot].obj=y; e[tot].c=z; e[tot].pre=head[x]; head[x]=tot;
  27. e[++tot].obj=x; e[tot].c=; e[tot].pre=head[y]; head[y]=tot;
  28. }
  29. bool bfs(){
  30. queue<int >q; clr(uu,-); uu[s]=; q.push(s);
  31. while (!q.empty()){
  32. int u=q.front(); q.pop();
  33. for (int j=head[u];j;j=e[j].pre){
  34. int v=e[j].obj;
  35. if (uu[v]==-&&e[j].c) uu[v]=uu[u]+,q.push(v);
  36. }
  37. }
  38. if (uu[t]==-) return ;
  39. return ;
  40. }
  41. int dfs(int x,int mx){
  42. if (x==t) return mx;
  43. int used=;
  44. for (int j=cur[x];j;j=e[j].pre){
  45. int v=e[j].obj;
  46. if (uu[v]==uu[x]+){
  47. int w=dfs(v,min(e[j].c,mx-used));
  48. used+=w; e[j].c-=w; e[j^].c+=w;
  49. if (e[j].c) cur[x]=j;
  50. if (used==mx) return mx;
  51. }
  52. }
  53. if (!used) uu[x]=-;
  54. return used;
  55. }
  56. int dinic(){
  57. int ans=;
  58. while (bfs()){
  59. rep(i,s,t) cur[i]=head[i];
  60. ans+=dfs(s,inf);
  61. }
  62. return ans;
  63. }
  64. bool jud(int x){
  65. int s=int(sqrt(x))+;
  66. rep(i,,s) if (x%i==) return ;
  67. return ;
  68. }
  69. bool work(){
  70. tot=; clr(head,); clr(odd,); clr(even,); //clr(one,0);
  71. int odd_cnt=,even_cnt=,one_in=,one_out=,one_cnt=;
  72. int n=read();
  73. rep(i,,n) {
  74. a[i]=read();
  75. if (a[i]>&&(a[i]&)) odd[++odd_cnt]=a[i];
  76. else if (a[i]>&&((a[i]&)==)) even[++even_cnt]=a[i];
  77. else one_cnt++;
  78. }
  79. int need=even_cnt-odd_cnt;
  80. rep(i,,one_cnt){
  81. if (need) {
  82. one_in++;
  83. odd[++odd_cnt]=;
  84. need--;
  85. }
  86. else one_out++;
  87. }
  88. if ((!one_in && (one_out==||one_out==)) || need!=) return ;
  89. s=; t=*odd_cnt+;
  90. int cnt=odd_cnt;
  91. rep(i,,cnt) insert(s,i,);
  92. rep(i,,cnt) insert(i+cnt,t,);
  93. rep(i,,cnt) rep(j,,cnt){
  94. if (jud(odd[i]+even[j])) {
  95. if (odd[i]==&&one_out>) insert(i,j+cnt,);
  96. else insert(i,j+cnt,);
  97. }
  98. }
  99. if (dinic()!=*cnt) return ;
  100. return ;
  101. }
  102. int main(){
  103. int T=read();
  104. while (T--){
  105. if (work()) puts("YES"); else puts("NO");
  106. }
  107. return ;
  108. }

BC#65 T5 ZYB's Prime的更多相关文章

  1. 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 ...

  2. BC 65 ZYB's Premutation (线段树+二分搜索)

    题目简述:有一个全排列,一直每个前缀区间的逆序对数,还原这个排列. fi记录逆序对数,pi记录该位置数值,则k=fi-f(i-1)表示前i-1个数比pi大的数的个数,那么只要在剩余元素求出按大小顺序第 ...

  3. BestCoder Round #65 (ZYB's Premutation)

    ZYB's Premutation Accepts: 220 Submissions: 983 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...

  4. BestCoder Round #65 (ZYB's Game)

    ZYB's Game Accepts: 672 Submissions: 1207 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...

  5. BestCoder Round #65 (ZYB's Biology)

    ZYB's Biology Accepts: 848 Submissions: 1199 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 13 ...

  6. BestCoder Round #65 HDOJ5592 ZYB&#39;s Premutation(树状数组+二分)

    ZYB's Premutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  7. BC 65 game

    主持人一直某个数字在1到n范围,假设甲乙已经知道,甲先猜乙后,都采用最优策略,主持人说偏大还是偏小,不断缩小范围,问最后乙能会获胜的X的取值的个数. 如果n为奇数,那么仅当x=n/2乙必然获胜,若为奇 ...

  8. OpenSSL CVE-2022-0778漏洞问题复现与非法证书构造

    本文介绍CVE-2022 0778漏洞及其复现方法,并精心构造了具有一个非法椭圆曲线参数的证书可以触发该漏洞. 本博客已迁移至CatBro's Blog,那是我自己搭建的个人博客,欢迎关注.本文链接 ...

  9. 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 ...

随机推荐

  1. JavaWeb框架_Struts2_(八)----->Struts2的国际化

    这一篇博文拖了蛮久了,现在先把它完成,结束struts2这个版块,当然这只是最基础的部分,做项目还需要更深的理解.下一个web后端的版块准备做Spring框架的学习-嗯,加油! 1. Struts2的 ...

  2. lodash源码分析之Hash缓存

    在那小小的梦的暖阁,我为你收藏起整个季节的烟雨. --洛夫<灵河> 本文为读 lodash 源码的第四篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash gitbo ...

  3. SpringMVC底层数据传输校验的方案

    团队的项目正常运行了很久,但近期偶尔会出现BUG.目前观察到的有两种场景:一是大批量提交业务请求,二是生成批量导出文件.出错后,再执行一次就又正常了. 经过跟踪日志,发现是在Server之间进行jso ...

  4. Chrome调试折腾记_(1)调试控制中心快捷键详解!!!

    转载:http://blog.csdn.net/crper/article/details/48098625 大多浏览器的调试功能的启用快捷键都一致-按下F12;还是熟悉的味道;  或者直接 Ctrl ...

  5. qrc资源文件加载后,裸机环境下图片不显示

    问题描述:在qt开发环境下,使用qss进行界面美化工作,里面包含许多图片资源.最后项目决定把这些图片资源和代码一起打包.然后就把图片资源和qss文件一起编入qrc文件中进行编译.在本机开发环境下是没有 ...

  6. SQL 多列合并一列

    select rtrim(姓)+ rtrim(名) as 姓名 from tb

  7. python内置函数与匿名函数

    内置函数 Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() d ...

  8. 理解纯CSS画三角形

    pure css draw a triangle code { display: inline-block; width: 300px; background-color: #E0E0E0 } .te ...

  9. python calendar(日历)模块

    内置函数month() #!/usr/bin/python import calendar print calendar.month(2017,12) 输出: December 2017 Mo Tu ...

  10. class java.awt.HeadlessException : No X11 DISPLAY variable was set, but this program performed an operation which requires it.

    今天上午打印回单功能发布到测试环境,报了: class java.awt.HeadlessException : No X11 DISPLAY variable was set, but this p ...