[洛谷P3153] [CQOI2009]跳舞
题目大意:有n个女生,n个男生,每次一男一女跳舞。同一队只会跳一次。每个男孩最多只愿意和k个不喜欢的女孩跳舞,女孩同理。问舞会最多能有几首舞曲?
题解:二分跳了多少次舞,每次重建图,建超级原点和汇点,每个人拆点成喜欢和不喜欢两个点,之间连边,容量为mid。最后看流量与预计流量是否相同
卡点:1.超级原点和汇点与每个点的边的容量定为mid(应为k)
C++ Code:
#include<cstdio>
#include<cstring>
using namespace std;
const int inf=0x3f3f3f3f;
int n,k,mid,ans;
int d[250];
int q[250],h,t;
int start=1,end;
int head[250],cnt=2;
char ch[60];
struct Edge{
int to,nxt,cost;
}e[1000000];
int v[60][60];
inline int min(int a,int b){return a<b?a:b;}
void add(int a,int b,int c){
e[cnt]=(Edge){b,head[a],c};head[a]=cnt;
e[cnt^1]=(Edge){a,head[b],0};head[b]=cnt^1;
cnt+=2;
}
bool bfs(){
memset(d,0,sizeof d);
d[q[t=h=1]=start]=1;
while (h<=t){
int x=q[h++];
if (x==end)return true;
for (int i=head[x];i;i=e[i].nxt){
int to=e[i].to;
if (e[i].cost&&!d[to]){
d[to]=d[x]+1;
q[++t]=to;
}
}
}
return d[end];
}
int dfs(int x,int low){
if (x==end||!low)return low;
int res=0,w;
for (int i=head[x];i;i=e[i].nxt){
int to=e[i].to;
if (e[i].cost&&(d[x]==d[to]-1)){
w=dfs(to,min(e[i].cost,low-res));
e[i].cost-=w;
e[i^1].cost+=w;
res+=w;
if (res==low)return low;
}
}
if (!res)d[x]=-1;
return res;
}
void build(int mid){
memset(head,0,sizeof head);
cnt=2;
for(int i=1;i<=n;i++){
add(start,i+1,mid);
add(i+n+n+1,end,mid);
add(i+1,i+n+1,k);
add(i+n+n+n+1,i+n+n+1,k);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(v[i][j])add(i+1,j+n+n+1,1);
else add(i+n+1,j+n+n+n+1,1);
}
bool check(int mid){
build(mid);
// puts("la");
int ans=0,k;
while (bfs()){
k=dfs(start,inf);
if (k>0)ans+=k;
}
if (ans==mid*n)return true;
return false;
}
int main(){
scanf("%d%d",&n,&k);
for (int i=1;i<=n;i++){
scanf("%s",ch);
for (int j=1;j<=n;j++){
v[i][j]=(ch[j-1]=='Y');
}
}
end=(n<<2)+2;
// puts("lalal");
int l=0,r=n;
while (l<=r){
mid=l+r>>1;
if (check(mid))l=mid+1,ans=mid;
else r=mid-1;
// printf("%d\n",mid);
}
printf("%d\n",ans);
return 0;
}
[洛谷P3153] [CQOI2009]跳舞的更多相关文章
- AC日记——[CQOI2009]DANCE跳舞 洛谷 P3153
[CQOI2009]DANCE跳舞 思路: 二分+最大流: 代码: #include <cstdio> #include <cstring> #include <iost ...
- 洛谷 P1627 [CQOI2009]中位数 解题报告
P1627 [CQOI2009]中位数 题目描述 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. 输入输出格式 输入格式 ...
- 洛谷 P3155 [CQOI2009]叶子的染色 解题报告
P3155 [CQOI2009]叶子的染色 题目描述 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根.内部结点和叶子均可)着以黑色或白色.你的着色方案应该保证根结点到 ...
- P3153 [CQOI2009]跳舞
题目描述 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲.有一些男孩女孩相互喜欢,而其他相互不喜欢(不会”单向喜欢“) ...
- 洛谷——P1627 [CQOI2009]中位数
P1627 [CQOI2009]中位数 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. 中位数的题目有关统计的话,可以转 ...
- [洛谷P3145] CQOI2009 循环赛
问题描述 n队伍比赛,每两支队伍比赛一次,平1胜3负0. 给出队伍的最终得分,求多少种可能的分数表. 输入格式 第一行包含一个正整数n,队伍的个数.第二行包含n个非负整数,即每支队伍的得分. 输出格式 ...
- 题解 P3153 【[CQOI2009]跳舞】
P3153 [CQOI2009]跳舞 题目描述 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲.有一些男孩女孩相互喜欢 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
随机推荐
- Lavavel5.5源代码 - 限流工具
app('redis')->connection('default')->throttle('key000') // 每60秒,只能有10个资源被获取,在3秒内获取不到锁抛出异常 -> ...
- linux几条基本命令和解释
pwd 查看当前目录/ 根目录ls 查看当前目录所包含文件ls -l 查看当前目录所包含文件的详细信息d rwx rwx r-x 1 root root1 2 3 4 ...
- 网站title标题被改并被百度网址安全中心提醒的解决办法
国庆假日期间我们Sine安全接到众多网站站长求助网站标题被改导致在百度搜索中百度安全中心提醒被拦截,导致网站正常用户无法浏览网站被跳转到一些菠菜du博网站,而且很明显的一个特征就是在百度中搜索关键词的 ...
- SKIP(插入空行)
WRITE 'This is the 1st line'. SKIP. WRITE 'This is the 2nd line'. 跳转至某一行 SKIP TO LINE line_number. 插 ...
- Linux系统下安装rz/sz命令
执行命令 yum install -y lrzsz rz -be本地上传文件到服务器
- cadence17.2的OrCAD启动找不到license的问题
1. cadence17.2的OrCAD每次启动都说找不到license 2. 提示是找不到licence,看下系统变量,licence的路径是在的 3. 估计是读取licence的路径的服务未开启, ...
- 从浏览器或者Webview 中唤醒APP
本文来自网易云社区 作者:刘新奇 移动互联时代,很多互联网服务都会同时具备网站以及移动客户端,很多人认为APP的能帮助建立更稳固的用户关系,于是经常会接到各种从浏览器.webview中唤醒APP的需求 ...
- 多个Target的使用
背景介绍 开发过程中,我们会在内网搭建一个测试服务器,开发.测试都是在内网进行的.这样产生脏数据不会影响外网的服务器.外网服务器只有最后发布时才会进行一些必要的测试. 还有就是要对同一份代码生成不同的 ...
- windows中vim以及cmder的使用
虽然有gvim,但是我依然更喜欢控制台(可理解为博主的偏执已经发展到某个阶段). windows自带的控制台很糟糕,尤其是我正在用的win7竟然没有全屏功能.任何一个占领屏幕的图标显然是不可忍受的. ...
- jsp 路径问题和环境路径以及各种路径总结
首先确定问题: 浏览器发送请求后,服务器会返回一个响应,但是返回的网页中,会有各种路径问题,所以在此用jsp中的属性来解决.(只是记录问题,用了不专业的术语,请见谅.) 总结: 以路径 http:/ ...