BZOJ1191: [HNOI2006]超级英雄Hero
这题标解是改一下匈牙利算法,显然,像我这种从不用匈牙利的人,会找个办法用网络流…
具体做法是这样,二分最后的答案ans,然后对前ans个问题建图跑网络流,看最大流能不能到ans。
/**************************************************************
Problem: 1191
User: zhuohan123
Language: C++
Result: Accepted
Time:64 ms
Memory:3128 kb
****************************************************************/ #include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
using namespace std;
int head[],pointsize;
struct edge{int to,next,c,p;};
edge g[];int gnum=;
void addedge(int from,int to,int c)
{
g[++gnum].to=to;g[gnum].c=c;g[gnum].next=head[from];head[from]=gnum;
g[++gnum].to=from;g[gnum].c=;g[gnum].next=head[to];head[to]=gnum;
}
int dfsstart,dfsend,ans;
bool haveans;int dfsans;
int d[],vd[];
void dfs(int po)
{
if(po==dfsend)
{
ans+=dfsans;
haveans=true;
return ;
}
int mind=pointsize-,tempans=dfsans;
for(int i=head[po];i;i=g[i].next)
if(g[i].c)
{
if(d[g[i].to]+==d[po])
{
if(g[i].c<dfsans)dfsans=g[i].c;
dfs(g[i].to);
if(d[dfsstart]>=pointsize)return ;
if(haveans)
{
g[i].c-=dfsans;
g[i^].c+=dfsans;
return ;
}
dfsans=tempans;
}
if(d[g[i].to]<mind)mind=d[g[i].to];
}
vd[d[po]]--;
if(!vd[d[po]])d[dfsstart]=pointsize;
d[po]=mind+;vd[d[po]]++;
}
int isap(int start,int end)
{
ans=;
memset(d,,sizeof(d));
memset(vd,,sizeof(vd));
vd[]=pointsize;
dfsstart=start;
dfsend=end;
while(d[dfsstart]<pointsize)
{
dfsans=;
haveans=false;
dfs(dfsstart);
}
return ans;
}
int n,m;
int mj[][];
bool check(int po)
{
gnum=;memset(head,,sizeof(head));
for(int i=;i<=n;i++)addedge(n+m+,i,);
for(int i=;i<=po;i++)addedge(i+n,n+m+,);
pointsize=n+m+;
for(int i=;i<=po;i++)
{
addedge(mj[i][]+,i+n,);
addedge(mj[i][]+,i+n,);
}
return po==isap(n+m+,n+m+);
}
int imerge(int l,int r)
{
if(l==r)return l;
int mid=(l+r)/+;
if(check(mid))return imerge(mid,r);
else return imerge(l,mid-);
}
int main(int argc ,char *argv[])
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)scanf("%d%d",&mj[i][],&mj[i][]);
printf("%d\n",imerge(,m));
return ;
}
BZOJ1191: [HNOI2006]超级英雄Hero的更多相关文章
- [BZOJ1191][HNOI2006]超级英雄Hero 类似二分图的最大匹配
1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4740 Solved: 2162[Submit][ ...
- BZOJ1191 [HNOI2006]超级英雄Hero 二分图匹配
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1191 题目概括 有m个题目,有n个解决方案:对于每一个题目,有两种解决方案可用. 每种解决方案只能 ...
- 【题解】 bzoj1191: [HNOI2006]超级英雄Hero (二分图)
bzoj1191,懒得复制,戳我戳我 Solution: 二分图最大匹配板子题 Attention: 注意题干中的一句话 只有当选手正确回答一道题后,才能进入下一题,否则就被淘汰. Code: //I ...
- 【二分图】【最大匹配】【匈牙利算法】bzoj1191 [HNOI2006]超级英雄Hero
裸的最大匹配. #include<cstdio> #include<vector> #include<cstring> using namespace std; v ...
- bzoj 1191: [HNOI2006]超级英雄Hero
1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec Memory Limit: 162 MB 二分图匹配... Description 现在电视台有一种节目叫做超 ...
- BZOJ 1191: [HNOI2006]超级英雄Hero 二分匹配
1191: [HNOI2006]超级英雄Hero Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或 ...
- bzoj 1191: [HNOI2006]超级英雄Hero 并查集 || 匈牙利算法
1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1804 Solved: 850[Submit][S ...
- bzoj 1191 [HNOI2006]超级英雄Hero(最大基数匹配)
1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2813 Solved: 1331[Submit][ ...
- BZOJ 1191: [HNOI2006]超级英雄Hero(二分图匹配)
云神说他二分图匹配从来都是用网络流水过去的...我要发扬他的精神.. 这道题明显是二分图匹配.网络流的话可以二分答案+最大流.虽然跑得很慢.... -------------------------- ...
随机推荐
- django-url调度器-初级篇
Django 遵从 MVC 模型,并将其特色化为 MTV 模型.模型的核心是通过用户访问的 url 来指向处理的函数,而函数处理后返回相应的结果.所以url决定了用户访问的入口,另外表单处理的提交地址 ...
- Python学习教程(learning Python)--3.3 分支语句的条件表达式详解
本节主要讨论分支语句的条件表达式问题. 在if或者if-else分支控制语句里由于都用到条件判断(表达式是真还是假),条件判断可以是一种关系运算也可以是布尔表达式. 本节将对if及if-else语句的 ...
- [转]从普通DLL中导出C++类 – dllexport和dllimport的使用方法(中英对照、附注解)
这几天写几个小程序练手,在准备将一个类导出时,发现还真不知道如果不用MFC的扩展DLL,是怎么导出的.但我知道dllexport可以导出函数和变量,而且MFC扩展DLL就算是使用了MFC的功能,但 ...
- 菜鸟学习Spring——60s使用annotation实现简单AOP
一.概述. AOP大家都知道切面编程,在Spring中annotation可以实现简单的AOP列子.下面还未大家介绍几个概念: Aspect 对横切性关注点的模块化. Advice 对横切性关注点的具 ...
- SAP B1 ADDON 开发
承接各类SAP B1 ADDON 开发. 有需要,请联系.
- spring AOP advice 类型 和 通用的切点的配置方式
spring aop advice的类型: 1.前置通知(before advice) 2.返回后通知(after returning advice) 3.抛出异常后通知(after throwing ...
- hdu 2035 人见人爱A^B
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2035 人见人爱A^B Description 求A^B的最后三位数表示的整数.说明:A^B的含义是“A ...
- Android清除本地数据缓存代码案例
Android清除本地数据缓存代码案例 直接上代码: /* * 文 件 名: DataCleanManager.java * 描 述: 主要功能有清除内/外缓存,清除数据库,清除shar ...
- ASP.NET MVC中使用事务写法
一些项目中,会涉及到事务的写法,比如订单相关,订单成功,会涉及到产品的库存和账户金额的一些信息变动,当然,如果整个流程成功,那是没什么问题,关键是如果中间某一步骤出现bug了,那之前已执行的一些变动就 ...
- [转]How do I use software from a PPA
[转]How do I use software from a PPA? https://launchpad.net/~mc3man/+archive/ubuntu/trusty-media To s ...