题目链接:http://poj.org/problem?id=1548

题目大意:给出一张地图上的垃圾,以及一堆机器人。每个机器人可以从左->右,上->下。走完就废。问最少派出多少个机器人才能捡完所有垃圾。

解题思路

本题原本是个LIS题。但是有二分图匹配解法。

类似POJ 3020的覆盖题,先不管机器人。把每个点都看作一个中心点。然后从这个点出发,向右、下方向连边,这样这个点就可以看作派出的机器人了。

由于方向固定,怎么连都不会连出反向边,所以是个天然有向图。

跑一遍Hungry,ans=垃圾数-match。

    #include "cstdio"
#include "vector"
#include "cstring"
using namespace std;
vector<int> G[*];
int link[*];
bool vis[*];
struct point
{
int x,y;
};
bool dfs(int u)
{
for(int v=;v<G[u].size();v++)
{
if(vis[G[u][v]]) continue;
vis[G[u][v]]=true;
if(link[G[u][v]]==-||dfs(link[G[u][v]]))
{
link[G[u][v]]=u;
return true; }
}
return false;
}
int main()
{
//freopen("in.txt","r",stdin);
point tt;
vector<point> pos;
int cnt=,ans=;
while(scanf("%d%d",&tt.x,&tt.y)&&tt.x!=-&&tt.y!=-)
{
if(tt.x==&&tt.y==)
{
for(int i=;i<cnt;i++)
{
for(int j=;j<cnt;j++)
{
if(i==j) continue;
if(pos[i].x<=pos[j].x&&pos[i].y<=pos[j].y) G[i].push_back(j);
}
}
memset(link,-,sizeof(link));
for(int i=;i<cnt;i++)
{
memset(vis,,sizeof(vis));
if(dfs(i)) ans++;
}
printf("%d\n",cnt-ans);
cnt=ans=;
pos.clear();
for(int i=;i<*;i++) G[i].clear();
continue;
}
pos.push_back(tt);
cnt++;
}
}
13260799 neopenx 1548 Accepted 652K 32MS C++ 1361B 2014-08-06 23:02:14

POJ 1548 (二分图+最小路径覆盖)的更多相关文章

  1. Taxi Cab Scheme POJ - 2060 二分图最小路径覆盖

    Running a taxi station is not all that simple. Apart from the obvious demand for a centralised coord ...

  2. POJ 3020 (二分图+最小路径覆盖)

    题目链接:http://poj.org/problem?id=3020 题目大意:读入一张地图.其中地图中圈圈代表可以布置卫星的空地.*号代表要覆盖的建筑物.一个卫星的覆盖范围是其周围上下左右四个点. ...

  3. [bzoj2150]部落战争_二分图最小路径覆盖

    部落战争 bzoj-2150 题目大意:题目链接. 注释:略. 想法: 显然是最小路径覆盖,我们知道:二分图最小路径覆盖等于节点总数-最大匹配. 所以我们用匈牙利或者dinic跑出最大匹配,然后用总结 ...

  4. POJ 3020 Antenna Placement (二分图最小路径覆盖)

    <题目链接> 题目大意:一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,每放置一个基站,至多可以覆盖相邻的两个城市.问至少放置多少个基站才能使得所有的城市都覆盖无线? 解题分析: ...

  5. 【HDU3861 强连通分量缩点+二分图最小路径覆盖】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3861 题目大意:一个有向图,让你按规则划分区域,要求划分的区域数最少. 规则如下:1.有边u到v以及有 ...

  6. hdu 1151 Air Raid(二分图最小路径覆盖)

    http://acm.hdu.edu.cn/showproblem.php?pid=1151 Air Raid Time Limit: 1000MS   Memory Limit: 10000K To ...

  7. HDU 3861 The King’s Problem(tarjan连通图与二分图最小路径覆盖)

    题意:给我们一个图,问我们最少能把这个图分成几部分,使得每部分内的任意两点都能至少保证单向连通. 思路:使用tarjan算法求强连通分量然后进行缩点,形成一个新图,易知新图中的每个点内部的内部点都能保 ...

  8. POJ3020 Antenna Placement(二分图最小路径覆盖)

    The Global Aerial Research Centre has been allotted the task of building the fifth generation of mob ...

  9. HDU 3861 The King’s Problem(强连通+二分图最小路径覆盖)

    HDU 3861 The King's Problem 题目链接 题意:给定一个有向图,求最少划分成几个部分满足以下条件 互相可达的点必须分到一个集合 一个对点(u, v)必须至少有u可达v或者v可达 ...

  10. K - Treasure Exploration - POJ 2594(最小路径覆盖+闭包传递)

    题意:给一个有向无环图,求出来最小路径覆盖,注意一个点可能会被多条路径重复 分析:因为有可能多条路径走一个点,可又能会造成匹配的不完全,所以先进行一次闭包传递(floyd),然后再用二分匹配的方法求出 ...

随机推荐

  1. hiho #1272 买零食 [Offer收割]编程练习赛2

    #1272 : 买零食 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰 ...

  2. 如何高效利用GitHub

    是Github,让社会化编程成为现实.本文尝试谈谈GitHub的文化.技巧与影响. Q1:GitHub是什么 Q2:GitHub风格 Q3: 在GitHub,如何跟牛人学习 Q4: 享受纯粹的写作与演 ...

  3. vs2010 调试快捷键

    vs2010 调试快捷键   命令名 快捷键 说明 调试.应用代码更改 Alt + F10 启动生成操作,利用它可以通过“编辑并继续”功能应用对正在调试的代码所作的更改. 调试.自动窗口 Ctrl + ...

  4. Jump Game | & ||

    Jump Game | Given an array of non-negative integers, you are initially positioned at the first index ...

  5. object-c面向对象1

    ---恢复内容开始--- 类,对象,方法,属性. 类是object-c一种重要的数据类型,是组成object-c程序的基本要素.object-c的类声明和实现包括两个部分:接口和实现部分. @inte ...

  6. iOS 中不同的modalPresentationStyle对parent view 的影响

    今天写程序时,突然发现当 用 UIModalPresentationPageSheet 弹出一个controller时,parrent view的viewWillDisappear 不会调用.而当用默 ...

  7. mysql 判空

    2013年9月10日 15:44:36 update `zzb_table` set status = 1 where `link` != ''; 不要用 update `zzb_table` set ...

  8. 三种配置linux环境变量的方法(以java为例)

    1.先确认是否为openjdk:参考 2. 修改/etc/profile文件  如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性 ...

  9. opencv学习笔记(一)IplImage, CvMat, Mat 的关系

    opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...

  10. oracle 10g 学习之数据进行增删改查、数据库事务、约束(8)

    目标 通过本章学习,您将可以: l  使用 DML 语句 l  向表中插入数据 l  更新表中数据 l  从表中删除数据 l  控制事务 l  描述约束 l  创建和维护约束 数据控制语言 l     ...