[CQOI2009]dance跳舞

每个人拆成$2$个点,表示是否与喜欢的人跳舞

跳$m$首舞曲时,满足最大流为$n*m$

二分$m$,跑最大流即可

  1. #include<cstdio>
  2. #include<cstring>
  3. inline int min(int A,int B){return A<B?A:B;}
  4. #define W 9999
  5. int n,k,S,T,cur[W],d[W],L,R,h[W];
  6. char q[][]; bool vis[W];
  7. int Cnt,hd[W],nxt[W],ed[W],poi[W],val[W];
  8. void adde(int x,int y,int v){
  9. nxt[ed[x]]=++Cnt; hd[x]=hd[x]?hd[x]:Cnt;
  10. ed[x]=Cnt; poi[Cnt]=y; val[Cnt]=v;
  11. }
  12. inline void link(int x,int y,int v){adde(x,y,v),adde(y,x,);}
  13. #define to poi[i]
  14. bool bfs(){
  15. for(int i=;i<=T;++i) cur[i]=hd[i],vis[i]=;
  16. h[L=]=S; R=; vis[S]=;
  17. while(L!=R){
  18. int x=h[L++]; if(L>=W)L=;
  19. for(int i=hd[x];i;i=nxt[i])
  20. if(!vis[to]&&val[i]){
  21. vis[to]=,d[to]=d[x]+;
  22. h[R++]=to; if(R>=W)R=;
  23. }
  24. }return vis[T];
  25. }
  26. int dfs(int x,int a){
  27. if(x==T||!a) return a;
  28. int F=,f;
  29. for(int &i=cur[x];i;i=nxt[i]){
  30. if(d[to]==d[x]+&&(f=dfs(to,min(a,val[i])))>)
  31. F+=f,a-=f,val[i]-=f,val[i^]+=f;
  32. if(!a) break;
  33. }return F;
  34. }
  35. int dinic(){int re=; while(bfs())re+=dfs(S,W); return re;}
  36. int chk(int x){
  37. memset(hd,,sizeof(hd)); Cnt=;
  38. memset(ed,,sizeof(ed));
  39. memset(nxt,,sizeof(nxt));
  40. for(int i=;i<=n;++i) link(S,i,x),link(i+n*,T,x);
  41. for(int i=;i<=n;++i){
  42. link(i,i+n,k); link(i+n*,i+n*,k);
  43. for(int j=;j<=n;++j){
  44. if(q[i][j]=='Y') link(i,j+n*,);
  45. else link(i+n,j+n*,);
  46. }
  47. }return dinic()==x*n;
  48. }
  49. int main(){
  50. scanf("%d%d",&n,&k); S=n*+,T=S+;
  51. for(int i=;i<=n;++i) scanf("%s",q[i]+);
  52. int l=,r=n+;
  53. while(l<r){
  54. int mid=(l+r)/;
  55. if(chk(mid)) l=mid+;
  56. else r=mid;
  57. }printf("%d",l-);
  58. return ;
  59. }

[CQOI2009]dance跳舞(最大流+二分)的更多相关文章

  1. BZOJ 1305: [CQOI2009]dance跳舞( 最大流 )

    云神代码很短...0 ms过的...看了代码 , 大概是贪心... orz 我不会证 数据这么小乱搞就可以了吧... ←_← 这道题网络流还是可以写的... 既然限制了最多只能和 k 个不喜欢的人da ...

  2. BZOJ 1305 dance跳舞(最大流+二分答案)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1305 解题思路:转自:https://blog.csdn.net/u012288458/ ...

  3. BZOJ 1305: [CQOI2009]dance跳舞 二分+最大流

    1305: [CQOI2009]dance跳舞 Description 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲 ...

  4. bzoj1305: [CQOI2009]dance跳舞(二分答案+网络流)

    1305: [CQOI2009]dance跳舞 题目:传送门 题解: 一眼网络流基础建模...然后就GG了 二分答案+拆点建边+最大流判断: 把男女生拆为男1,男2,女1,女2 1.男1和男2还有女1 ...

  5. AC日记——[CQOI2009]DANCE跳舞 洛谷 P3153

    [CQOI2009]DANCE跳舞 思路: 二分+最大流: 代码: #include <cstdio> #include <cstring> #include <iost ...

  6. BZOJ1305 [CQOI2009]dance跳舞 【网络流】

    1305: [CQOI2009]dance跳舞 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 3714  Solved: 1572 [Submit][ ...

  7. bzoj 1305: [CQOI2009]dance跳舞

    题目链接 bzoj 1305: [CQOI2009]dance跳舞 题解 男,女生拆点A1A2,B1B2,拆成两点间分别连容量为K的边,限制与不喜欢的人跳舞的数量 A1连接源点容量为x,B1连接汇点容 ...

  8. bzoj千题计划130:bzoj1305: [CQOI2009]dance跳舞

    http://www.lydsy.com/JudgeOnline/problem.php?id=1305 每个人拆为喜欢(yes)和不喜欢(no)两个点 二分答案 1.每两个人之间只能跳一次 喜欢则 ...

  9. BZOJ 1305 CQOI2009 dance跳舞 二分答案+最大流

    题目大意:给定n个男生和n个女生,一些互相喜欢而一些不.举行几次舞会,每次舞会要配成n对.不能有同样的组合出现.每一个人仅仅能与不喜欢的人跳k次舞,求最多举行几次舞会 将一个人拆成两个点.点1向点2连 ...

随机推荐

  1. Qt学习笔记-Widget布局管理

    Qt学习笔记4-Widget布局管理       以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...

  2. sql优化-派生表与inner-join

    首先来说明一下派生表? 外部的表查询的结果集是从子查询中生成的.如下形式: select ... from (select ....) dt 如上形式中括号中的查询的结果作为外面select语句的查询 ...

  3. PHP培训教程 PHP的运算符

    PHP中有丰富的运算符集,它们中大部分直接来自于C语言.按照不同功能区分,兄弟连PHP培训 运算符可以分为:算术运算符.字符串运算符.赋值运算符.位运算符.条件运算符,以及逻辑运算符等.当各种运算符在 ...

  4. SQL Server性能调优--优化建议(一)

    序言 当数据量小的时候,SQL优化或许无关紧要,但是当数据量达到一定量级之后,性能优化将变得至关重要,甚至决定系统成败. 定位慢查询 查询编译以来cpu耗时总量最多的前50条 --查询编译以来 cpu ...

  5. 将HTML5封装成android应用APK文件若干方法(转)

          HTML5拥有很多让人期待已久的新特性.HTML5的优势之一在于能够实现跨平台游戏编码移植,现在已经有很多公司在移动设备上使用HTML5技术.随着HTML5跨平台支持的不断增强和智能手机的 ...

  6. 电脑新安装JDK版本并运行使用该JDK版本问题

    情景:电脑上已正常安装一个jdk版本,如:1.7.0_71,因考虑到一些情况,现需要使用版本为1.7.0_80(1.8),故需新安装JDK,并使服务可以运行使用新安装的JDK版本. 网络找寻方法: ( ...

  7. 文档流&文字&CSS常用命令

    文档流 文档流就是文档内元素流动方向 流动方向 内联元素从左往右流,宽度不够,之字形,且元素会被截断 块元素从上往下流动,一排一排 注意事项 内联元素中有英文单词,流动时宽度不够,英文单词会整体迁移, ...

  8. 【30分钟学完】canvas动画|游戏基础(2):从零开始画画

    前言 上篇主要是理论的概述,本篇会多些实践,来讲讲canvas的基础用法,并包含一些基础三角函数的应用,推荐没有canvas基础的朋友阅读,熟悉的朋友可以跳过. 本人能力有限,欢迎牛人共同讨论,批评指 ...

  9. twitter api的使用

    1.用手机号注册推特账号 https://twitter.com/ 2.进入网站 https://apps.twitter.com/ 创建第一个app,填入基本信息 name写完会检测是否已经存在像我 ...

  10. 高级软件测试技术(测试管理工具实践day2)

    今天在紧张的学习之余,我们小组选定了bugzilla,并且打算在今天晚上刚进行下载安装. 在安装bugzilla需要的软件有MySQL数据库软件,activeperl软件,bugzilla安装包,II ...