hdu 2236(二分图最小点覆盖+二分)
无题II
Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1545 Accepted Submission(s): 692
对于每组数据第一行输入一个正整数n(1<=n<=100)表示矩阵的大小。
接着输入n行,每行n个数x(0<=x<=100)。
4
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
#include<iostream>
#include<cstdio>
#include<cstring>
#include <algorithm>
#include <math.h>
using namespace std;
const int N = ;
int n,MIN,MAX;
int graph[N][N],mp[N][N];
int linker[N];
bool vis[N];
bool dfs(int u)
{
for(int v=; v<=n; v++)
{
if(!vis[v]&&mp[u][v])
{
vis[v] = true;
if(linker[v]==-||dfs(linker[v]))
{
linker[v] = u;
return true;
}
}
}
return false;
}
bool match(int mid)
{
int k = MAX - mid;
for(int i=; i<=k; i++)
{
for(int j=; j<=n; j++)
{
for(int k=; k<=n; k++)
{
if(graph[j][k]<=i+mid&&graph[j][k]>=i) mp[j][k] = ;
else mp[j][k]=;
}
}
memset(linker,-,sizeof(linker));
int res = ;
for(int u=; u<=n; u++)
{
memset(vis,false,sizeof(vis));
if(dfs(u)) res++;
}
if(res==n) return true;
}
return false;
}
int main()
{
int tcase;
scanf("%d",&tcase);
while(tcase--)
{
scanf("%d",&n);
MIN=,MAX=-;
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
scanf("%d",&graph[i][j]);
MIN = min(MIN,graph[i][j]);
MAX = max(MAX,graph[i][j]);
}
}
int l = MIN,r = MAX,ans = MAX-MIN;
while(l<=r)
{
int mid = (l+r)>>;
if(match(mid))
{
ans = mid;
r = mid-;
}
else l=mid+;
}
printf("%d\n",ans);
}
return ;
}
hdu 2236(二分图最小点覆盖+二分)的更多相关文章
- 四川第七届 D Vertex Cover(二分图最小点覆盖,二分匹配模板)
Vertex Cover frog has a graph with nn vertices v(1),v(2),…,v(n)v(1),v(2),…,v(n) and mm edges (v(a1), ...
- [POJ] 2226 Muddy Fields(二分图最小点覆盖)
题目地址:http://poj.org/problem?id=2226 二分图的题目关键在于建图.因为“*”的地方只有两种木板覆盖方式:水平或竖直,所以运用这种方式进行二分.首先按行排列,算出每个&q ...
- POJ2226 Muddy Fields(二分图最小点覆盖集)
题目给张R×C的地图,地图上*表示泥地..表示草地,问最少要几块宽1长任意木板才能盖住所有泥地,木板可以重合但不能盖住草地. 把所有行和列连续的泥地(可以放一块木板铺满的)看作点且行和列连续泥地分别作 ...
- POJ1325 Machine Schedule(二分图最小点覆盖集)
最小点覆盖集就是在一个有向图中选出最少的点集,使其覆盖所有的边. 二分图最小点覆盖集=二分图最大匹配(二分图最大边独立集) 这题A机器的n种模式作为X部的点,B机器的m种模式作为Y部的点: 每个任务就 ...
- hihoCoder #1127:二分图最小点覆盖和最大独立集
题目大意:求二分图最小点覆盖和最大独立集. 题目分析:如果选中一个点,那么与这个点相连的所有边都被覆盖,使所有边都被覆盖的最小点集称为最小点覆盖,它等于最大匹配:任意两个点之间都没有边相连的最大点集称 ...
- 二分图 最小点覆盖 poj 3041
题目链接:Asteroids - POJ 3041 - Virtual Judge https://vjudge.net/problem/POJ-3041 第一行输入一个n和一个m表示在n*n的网格 ...
- HihoCoder1127 二分图三·二分图最小点覆盖和最大独立集
二分图三·二分图最小点覆盖和最大独立集 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上次安排完相亲之后又过了挺长时间,大家好像都差不多见过面了.不过相亲这个事不是说 ...
- hihoCoder #1127 : 二分图二·二分图最小点覆盖和最大独立集
#1127 : 二分图二·二分图最小点覆盖和最大独立集 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 在上次安排完相亲 ...
- Asteroids POJ - 3041 二分图最小点覆盖
Asteroids POJ - 3041 Bessie wants to navigate her spaceship through a dangerous asteroid field in ...
随机推荐
- Python标准模块logging
http://blog.csdn.net/fxjtoday/article/details/6307285 开发Python, 一直以来都是使用自己编写的logging模块. 比较土...... 今天 ...
- 软工实践 - 第二十四次作业 Beta 冲刺(2/7)
队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10105380.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...
- 创建带maven的javaWeb项目
1File——Maven——maven-archtypes-webapp GroupId:表示项目组织唯一标识符 ArtifacrId:表示项目唯一标识符 例如项目名称 Version是项目版本 这三 ...
- java05笔记
- Vue2.0 新手完全填坑攻略——从环境搭建到发布(转载)
强力推荐,详情请点击此链接http://www.jianshu.com/p/5ba253651c3b
- C++编码规范101
组织和策略问题 第0条 不要拘泥于小节(又名:了解哪些东西不应该标准化) 第1条 在高警告级别干净利落地进行编译 第2条 使用自动构建系统 第3条 使用版本控制系统 第4条 在代码审查上投入 设计风格 ...
- ElasticSearch1.7.1拼音插件elasticsearch-analysis-pinyin-1.3.3使用介绍
ElasticSearch拼音插件elasticsearch-analysis-pinyin使用介绍 https://my.oschina.net/xiaohui249/blog/214505 摘要: ...
- 【bzoj4002】[JLOI2015]有意义的字符串 数论+矩阵乘法
题目描述 B 君有两个好朋友,他们叫宁宁和冉冉.有一天,冉冉遇到了一个有趣的题目:输入 b;d;n,求 输入 一行三个整数 b;d;n 输出 一行一个数表示模 7528443412579576937 ...
- [NOI.AC省选模拟赛3.30] Mas的童年 [二进制乱搞]
题面 传送门 思路 这题其实蛮好想的......就是我考试的时候zz了,一直没有想到标记过的可以不再标记,总复杂度是$O(n)$ 首先我们求个前缀和,那么$ans_i=max(pre[j]+pre[i ...
- Win7命令mklink的使用
C盘空间越来越小,在Win7里还标红了,心里看得不舒服,得想一些方法腾出一些空间.看了AppData,Chrome占了1G多的空间. 当时安装Chrome浏览器时因为不能指定安装目录,所以Chrome ...