题目大意: 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路  1:(x,y)<==>(x+1,y)  2:(x,y)<==>(x,y+1)  3:(x,y)<==>(x+1,y+1)  道路上的权值表示这条路上最多能够通过的兔子数,道路是无…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 算法讨论: 1.可以用最大流做,最大流等于最小割. 2.可以把这个图转化其对偶图,然后在对偶图上跑最短路即可. 一个平面图的最小割等价于其对偶图从S到T的最短路.并不是所有的图都有对偶图,平面图也有一定的要求,自己可以百度一下. 代码(用BZOJ的数据测过了,但是在BZOJ上过不去.爆WA,并不知道是为什么,里面有个特判,并不知道有没有用处.) #include <iostream…
首先注意到,把一个点的海拔定为>1的数是毫无意义的.实际上,可以转化为把这些点的海拔要么定为0,要么定为1. 其次,如果一个点周围的点的海拔没有和它相同的,那么这个点的海拔也是可以优化的,即把这个点变为周围海拔一样的显然能使结果变优. 于是问题就变成了,这个图的海拔为0的联通块和起点连在一起,海拔为1的联通块和终点连在一起. 此即为经典的最小割. 由于此图为平面图,我们可以使用平面图最小割转对偶图最短路优化算法. 因为这是有向图,因此构建对偶图的时候注意边的方向即可. # include <c…
题目链接 想一下能猜出,最优解中海拔只有0和1,且海拔相同的点都在且只在1个连通块中. 这就是个平面图最小割.也可以转必须转对偶图最短路,不然只能T到90分了..边的方向看着定就行. 不能忽略回去的边,因为最小割的形状可能很奇怪. //16232kb 456ms //平面图点数就是(n-1)^2了.但是边数不是4(n-1)^2,是4n(n-1)!.. #include <queue> #include <cstdio> #include <cctype> #includ…
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2007 题意:给出一个n*n的格子,那么顶点显然有(n+1)*(n+1)个.每两个相邻顶点之间有两条边,这两条边是有向的,边上有权值..左上角为源点,右下角为汇点,求s到t的最小割. 思路:很明显这是一个平面图,将其转化为最 短路.我们将s到t之间连一条边,左下角为新图的源点S,右上角区域为新图的终点T,并且为每个格子编号.由于边是有向的,我们就要分析下这条边应该是哪 个点向哪个点的边.…
2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2095  Solved: 1002[Submit][Status][Discuss] Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路(简称道路),每条双向道路连接主…
原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1001 整理了下之前A的题 平面图可以转化成对偶图,然后(NlogN)的可以求出图的最小割(最大流) 算法合集有具体的讲解,有兴趣的可以在网上搜下或者向我要(QQ30056882) /************************************************************** Problem: User: BLADEVIL Language: Pascal…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2007 一个点的高度一定不是0就是1.答案一定形如一个左上角的连通块全是0的点.一个右下角的连通块全是1的点. 注意从东到西还有从南到北的边也有用!因为不一定是一个阶梯形的,还可以拐来拐去,只是一定是两个连通块罢了. 所以最小割一下那个分界线就行了.但会TLE. #include<cstdio> #include<cstring> #include<algorithm&g…
平面图转对偶图:先在原图中加一个s->t的边,然后对每个面建一个点,对每条分隔两个面的边加一条连接这两个面对应点的边,边权等于原边权. 然后从刚才加的s->t分割出来的两面对应的两个点跑最短路,求出来的就是s到t的最小割. 要特判n==0||m==0的情况 然后我特判的那个点就T了一万次,在抄elijahqi巨佬的代码的时候才发现: 我是这样写的: ... #define MIN(x,y) (x<y?x:y) ... ....ans=MIN(ans,read()) .... 这能不T就有…
题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路(简称道路),每条双向道路连接主干道上两个相邻的交叉路口.下图为一张YT市的地图(n = 2),城市被划分为2×2个区域,包括3×3个交叉路口和12条双向道路. 小Z作为该市的市长,他根据统计信息得到了每天上班高峰期间YT市每条道路两个方向的人流量,即在高峰期间沿着…