BZOJ2240 : ural1676 Mortal Combat
首先如果最大匹配不足$n$个那么显然每条边都不可能在匹配为$n$的方案中。
对于一条边$(u,v)$,如果它可能在最大匹配中,有两种情况:
$1.(u,v)$是当前方案的匹配边。
$2.$可以沿着$(u,v)$进行增广,那么在残余网络中$u$在$v$在一个环中,即属于同一个强连通分量。
因为源点不存在出边,因此只需加入汇点再求SCC即可。
时间复杂度$O(n^3)$。
#include<cstdio>
const int N=1505,M=N*N;
int n,m,T,i,j,b[N],f[N],g[N<<1],v[M],nxt[M],G[N<<1],V[M],NXT[M],ed,vis[N<<1],q[N<<1],t,id[N<<1];char a[N][N];
bool find(int x){
for(int i=1;i<=m;i++)if(!b[i]&&a[x][i]){
b[i]=1;
if(!f[i]||find(f[i]))return f[i]=x,1;
}
return 0;
}
inline void add(int x,int y){
v[++ed]=y;nxt[ed]=g[x];g[x]=ed;
V[ed]=x;NXT[ed]=G[y];G[y]=ed;
}
void dfs1(int x){
vis[x]=1;
for(int i=g[x];i;i=nxt[i])if(!vis[v[i]])dfs1(v[i]);
q[++t]=x;
}
void dfs2(int x,int y){
vis[x]=0;id[x]=y;
for(int i=G[x];i;i=NXT[i])if(vis[V[i]])dfs2(V[i],y);
}
int main(){
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)for(scanf("%s",a[i]+1),j=1;j<=m;j++)a[i][j]-='0';
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)b[j]=0;
if(!find(i)){
for(i=1;i<=n;puts(""),i++)for(j=1;j<=m;j++)putchar('1');
return 0;
}
}
T=n+m+1;
for(i=1;i<=n;i++)for(j=1;j<=m;j++)if(a[i][j])if(f[j]==i)add(j+n,i);else add(i,j+n);
for(i=1;i<=m;i++)if(f[i])add(T,i+n);else add(i+n,T);
for(i=1;i<=T;i++)if(!vis[i])dfs1(i);
for(i=t;i;i--)if(vis[q[i]])dfs2(q[i],q[i]);
for(i=1;i<=n;puts(""),i++)for(j=1;j<=m;j++)if(a[i][j]&&(f[j]==i||id[i]==id[j+n]))putchar('0');else putchar('1');
return 0;
}
BZOJ2240 : ural1676 Mortal Combat的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- (转)8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset
8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset by Jason Brownlee on August ...
- 11 Mortal Fibonacci Rabbits
Problem Figure 4. A figure illustrating the propagation of Fibonacci's rabbits if they die after thr ...
- 论文翻译 - Multiagent Bidirectionally-Coordinated Nets Emergence of Human-level Coordination in Learning to Play StarCraft Combat Games
(缺少一些公式的图或者效果图,评论区有惊喜) (个人学习这篇论文时进行的翻译[谷歌翻译,你懂的],如有侵权等,请告知) Multiagent Bidirectionally-Coordinated N ...
- SPOJ COT3 Combat on a tree(Trie树、线段树的合并)
题目链接:http://www.spoj.com/problems/COT3/ Alice and Bob are playing a game on a tree of n nodes.Each n ...
- Combat 战斗任务
发售年份 1977 平台 VCS 开发商 雅达利(Atari) 类型 射击 https://www.youtube.com/watch?v=2LxPEdUZOkE
- SPOJ COT3.Combat on a tree(博弈论 Trie合并)
题目链接 \(Description\) 给定一棵\(n\)个点的树,每个点是黑色或白色.两个人轮流操作,每次可以选一个白色的点,将它到根节点路径上的所有点染黑.不能操作的人输,求先手是否能赢.如果能 ...
- SPOJ COT3 - Combat on a tree
/* 考虑直接使用暴力来算的话 SG[i]表示以i为根的子树的SG值, 然后考虑枚举删除那个子树节点, 然后求拆成的树的sg异或值, 求mex即可 复杂度三次方 然后考虑尝试 整体来做 发现对于每次子 ...
- 北京集训TEST12——PA( Mortal Kombat)
题目: Description 有一天,有N个外星人企图入侵地球.地球派出全球战斗力最强的M个人代表人类对抗外星人.根据外星的战斗规则,每个外星人应该分别与一名地球人对战(不同的外星人要与不同的地球人 ...
随机推荐
- tensorflow:验证码的识别(上)
验证码的识别 主要分成四个部分:验证码的生成.将生成的图片制作成tfrecord文件.训练识别模型.测试模型 使用pyCharm作为编译器.本文先介绍前两个部分 验证码的识别有两种方法: 验证码识别方 ...
- LOCK TABLES 和 UNLOCK TABLES
MySQLdump的时LOCK TABLES 和 UNLOCK TABLES 在mysqldump后的数据中会发现有 LOCK TABLES tables_name WRITE;和结尾处有 UNLOC ...
- ArcObjects 中连接geodatabase
参考资料: 1. http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/d/0001000003s8 ...
- 修改tomcat的默认访问日志信息
修改前:
- JMeter中BeanShell的实际应用
使用Jmeter的BeanShell断言,把响应数据中的JSON跟数据库中的记录对比 很多时候我们需要把Response Data取到的 Json 字符串跟数据库里的对比,来验证接口的正确性,使用Be ...
- 如何确定系统上的CPU插槽数量
环境 Red Hat Enterprise Linux 7 Red Hat Enterprise Linux 6 Red Hat Enterprise Linux 5 Red Hat Enterpri ...
- UOJ#53. 【UR #4】追击圣诞老人 树链剖分 k短路
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ53.html 题意 给定一棵有 n 个节点的树. 每一个点有一个权值. 对于每一个 $i$ 给定三个参数 ...
- BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路
原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html 题目传送门 - BZOJ1001 题意 长成上面那样的网格图求最小割. $n,m\leq ...
- scrapy下载图片报[scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt:错误
本文转自:http://blog.csdn.net/zzk1995/article/details/51628205 先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting ...
- 071 SparkStreaming与SparkSQL集成
1.说明 虽然DStream可以转换成RDD,但是如果比较复杂,可以考虑使用SparkSQL. 2.集成方式 Streaming和Core整合: transform或者foreachRDD方法 Cor ...