题意:有一个城镇,它的所有街道都是单行(即有向)的,并且每条街道都是和两个路口相连。同时已知街道不会形成回路。可以在任意一个路口放置一个伞兵,这个伞兵会顺着街道走,依次经过若干个路口。问最少需要投放几个伞兵,使得每个路口都被伞兵拜访过。并且要满足每个路口只能被一个伞兵拜访过。思路:裸DAG图的最小路...
分类:
其他好文 时间:
2014-11-16 00:26:50
阅读次数:
292
题意:给一个m*n的矩阵,每格上有一个数。找从第1行到第m行的一条路径,使得这条路径上的数之和最小。路径必须满足相邻两行所选的两个数的纵坐标相邻(即一个格子必须是另一个格子的周围八个格子中的一个)输出每一行取的数的列值。 若有多个答案,则路径要求尽量靠右。思路:简单数塔DP。题比较不好读,不过可以分...
分类:
其他好文 时间:
2014-11-09 18:01:25
阅读次数:
115
题目链接
题意:在一个有向图上,至少放多少个机器人可以遍历整个图(每个顶点可以重复遍历)?
思路:最小路径覆盖的变形,因为点可以重复遍历,所以要用floyd重新建图,然后用最小路径覆盖去做。
代码:
#include
#include
#include
#include
#include
using namespace std;
const int M...
分类:
其他好文 时间:
2014-11-08 18:15:57
阅读次数:
150
题目链接
题意:给定一个有向图,问最少放多少个伞兵,使得所有路口都能被走到,所有路口有且只被走到一次。
思路:二分图的最小路径覆盖。
在一个 N*N 的有向图中,路径覆盖就是在图中找一些路经,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联;(如果把这些路径中的每条路径从它的起始点走到它的终点,那么恰好可以经过图中的每个顶点一次且仅一次);如果不考虑图中...
分类:
其他好文 时间:
2014-11-08 16:49:19
阅读次数:
150
题目大意:给出一张地图,一个军队要征战整个土地。一块土地只能经过一次,有X的地方不能走,军队只会走R*C个格子,只会向下走,问最少需要多少军队能够征战所有的土地。
思路:这个是前几天考试的题,今天居然发现时BZ的原题,还好当时A掉了。。。
看到每个土地只能经过一次就想到了网络流什么的,再一想想好像是最小路径覆盖啊,然后拆点,建图,Hungary,二分图最小路径覆盖=点数-最大匹配,没了...
分类:
其他好文 时间:
2014-11-05 10:59:25
阅读次数:
172
题意:
有一些位置有垃圾,让机器人从左上角开始走,只能往右或者往下,问最少走多少次可以清理完所有垃圾、
题解:
一看就是网络流经典题,或者说是二分图—最小路径覆盖;但是现在毕竟是在做一些贪心,这道题用的是一种贪心相关定理,Dilworth定理。
这道题可以理解为部分两点之间有偏序(可走的关系),呃,可以视为当xa
比如题中的数据1,我们经过处理得到2 4...
分类:
其他好文 时间:
2014-11-05 10:59:11
阅读次数:
268
POJ 1548 Robots
题目链接
题意:乍一看还以为是小白上那题dp,其实不是,就是求一共几个机器人可以覆盖所有路径
思路:最小路径覆盖问题,一个点如果在另一个点右下方,就建边,然后跑最小路径覆盖即可
代码:
#include
#include
#include
#include
using namespace std;
const int N = ...
分类:
其他好文 时间:
2014-10-30 19:20:32
阅读次数:
173
题意 给你一个无向图的邻接矩阵 和途径每个点需要的额外花费首尾没有额外花费 求图中某两点之间的最短路并打印字典序最小路径
要求多组点之间的就用floyd咯 打印路径也比较方便 nex[i][j]表示从i点到j点最短路的第一个途经点 那么如果路径中加入一个节点k后 nex[i][j]应该更新为nex[i][k] 因为要途径k了
#include
#include
using nam...
分类:
其他好文 时间:
2014-10-30 11:41:33
阅读次数:
250
POJ 2594 Treasure Exploration
题目链接
题意:有向无环图,求最少多少条路径可以覆盖整个图,点可以重复走
思路:和普通的最小路径覆盖不同的是,点可以重复走,那么其实只要在多一步,利用floyd求出传递闭包,然后根据这个新的图去做最小路径覆盖即可
代码:
#include
#include
#include
#include
usin...
分类:
其他好文 时间:
2014-10-29 17:11:53
阅读次数:
201