[CQOI2009]dance跳舞

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

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

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

#include<cstdio>
#include<cstring>
inline int min(int A,int B){return A<B?A:B;}
#define W 9999
int n,k,S,T,cur[W],d[W],L,R,h[W];
char q[][]; bool vis[W];
int Cnt,hd[W],nxt[W],ed[W],poi[W],val[W];
void adde(int x,int y,int v){
nxt[ed[x]]=++Cnt; hd[x]=hd[x]?hd[x]:Cnt;
ed[x]=Cnt; poi[Cnt]=y; val[Cnt]=v;
}
inline void link(int x,int y,int v){adde(x,y,v),adde(y,x,);}
#define to poi[i]
bool bfs(){
for(int i=;i<=T;++i) cur[i]=hd[i],vis[i]=;
h[L=]=S; R=; vis[S]=;
while(L!=R){
int x=h[L++]; if(L>=W)L=;
for(int i=hd[x];i;i=nxt[i])
if(!vis[to]&&val[i]){
vis[to]=,d[to]=d[x]+;
h[R++]=to; if(R>=W)R=;
}
}return vis[T];
}
int dfs(int x,int a){
if(x==T||!a) return a;
int F=,f;
for(int &i=cur[x];i;i=nxt[i]){
if(d[to]==d[x]+&&(f=dfs(to,min(a,val[i])))>)
F+=f,a-=f,val[i]-=f,val[i^]+=f;
if(!a) break;
}return F;
}
int dinic(){int re=; while(bfs())re+=dfs(S,W); return re;}
int chk(int x){
memset(hd,,sizeof(hd)); Cnt=;
memset(ed,,sizeof(ed));
memset(nxt,,sizeof(nxt));
for(int i=;i<=n;++i) link(S,i,x),link(i+n*,T,x);
for(int i=;i<=n;++i){
link(i,i+n,k); link(i+n*,i+n*,k);
for(int j=;j<=n;++j){
if(q[i][j]=='Y') link(i,j+n*,);
else link(i+n,j+n*,);
}
}return dinic()==x*n;
}
int main(){
scanf("%d%d",&n,&k); S=n*+,T=S+;
for(int i=;i<=n;++i) scanf("%s",q[i]+);
int l=,r=n+;
while(l<r){
int mid=(l+r)/;
if(chk(mid)) l=mid+;
else r=mid;
}printf("%d",l-);
return ;
}

[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. POJ-1459-Pwoer Network(最大流Dinic, 神仙输入)

    链接: https://vjudge.net/problem/POJ-1459 题意: A power network consists of nodes (power stations, consu ...

  2. ESP8266-向物联网云平台发送数据--dweet

    方法一: //向物联网平台发送数据 //发送数据格式: https://dweet.io/dweet/for/my-thing-name?hello=world 免费平台 //my-thing-nam ...

  3. python-类对象的比较

    #类对象的比较 class Person: def __init__(self,age,height): self.age=age self.height=height def __eq__(self ...

  4. axios中put和patch的区别(都是update , put是需要提交整个对象资源,patch是可以修改局部)

    patch方法用来更新局部资源,这句话我们该如何理解? 假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段.可你的编辑功能因为需求,在某个特别的 ...

  5. tweenMax+如何让数字由初始值动画到结束的值

    html: <div class="wz1">0</div> css: .wz1{ width: 114px; height: 30px; position ...

  6. 开发 .swan 文件

    这部分是每个智能小程序页面的展现模板,类似于 Web 开发中的 HTML ,SWAN 模板中使用的标签均为 SWAN 组件规定的标签. <view s-for="item in ite ...

  7. Content-type的几种常见类型

    一.是什么? 是Http的实体首部字段,用于说明请求或返回的消息主体是用何种方式编码,在request header和response header里都存在. 二.几个常用类型: 1.applicat ...

  8. $FFT/NTT/FWT$题单&简要题解

    打算写一个多项式总结. 虽然自己菜得太真实了. 好像四级标题太小了,下次写博客的时候再考虑一下. 模板 \(FFT\)模板 #include <iostream> #include < ...

  9. Swift equality

    最后更新: 2017-07-23 在程序开发中,我们时常需要来判断两个对象是否相等.在编程思想中,两个对象相等指的是在内存中的地址相同,也就是两个指针指向同一个地址.但是在日常理解中,只要两个对象的内 ...

  10. codeforces 668C - Little Artem and Random Variable

    题目链接:http://codeforces.com/contest/668/problem/C --------------------------------------------------- ...