bzoj2007 NOI2010 海拔(对偶图)】的更多相关文章

首先确定所有点的海拔非0即1,问题转化成裸的平面图最小割问题,进而转化成对偶图最短路(同BZOJ1002). 这题的边是有向的,所以所有边顺时针旋转90度即可. 如下图(S和T的位置是反的). #include<cstdio> #include<cstring> #include<queue> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) using namesp…
80分(最小割)思路 先考虑如果没有题目中东南角为\(1\)那个限制的话会怎样. 那么只要让每个点的海拔都是\(0\)就行了.这样不论怎样走,最后的答案都是0. 然后再考虑那个东南角为\(1\)的限制表达了什么.其实说明了最后的答案一定是右下角一部分海拔全部为\(1\),左上角一部分海拔全部为\(0\). 所以这样只要找到分界点就行了. 这就是最小割的裸题啊.以\((1,1)\)为起点,\((n+1,n+1)\)为终点跑一遍最小割就行了. 100分(对偶图)思路 直接最小割过不去后面的大数据.所…
luogu2046[NOI2010]海拔 对偶图优化 链接 https://www.luogu.org/problemnew/show/P2046 思路 海拔一定是0或者1,而且会有一条01交错的分界线. 转化为最小割,用对偶图优化求得.最小割论文写的特清楚. 代码 #include <iostream> #include <cstring> #include <queue> #include <cstdio> #include <algorithm&…
[BZOJ2007][Noi2010]海拔 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路(简称道路),每条双向 道路连接主干道上两个相邻的交叉路口.下图为一张YT市的地图(n = 2),城市被划分为2×2个区域,包括3×3个交叉路口和12条双向道路. 小Z作为该市的市长,他根据统计信息得到了每…
2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2742  Solved: 1318[Submit][Status][Discuss] Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个 正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路 (简称道路),每条双向道路连…
题目链接 BZOJ2007 题解 这是裸题啊,,要是考试真的遇到就好了 明显是最小割,而且是有来回两个方向 那么原图所有向右的边转为对偶图向下的边 向左的边转为向上 向下转为向左 向上转为向右 然后跑一遍最短路即可 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<vector> #include<queue> #inc…
题面太长啦,请诸位自行品尝—>海拔 分析: 这是我见过算法比较明显的最小割题目了,很明显对于某一条简单路径,海拔只会有一次变换. 而且我们要最终使变换海拔的边权值和最小. 我们发现变换海拔相当于将图割开,左上右下两个点分别属于两个不同的集合,那这就是一个很形象的最小割模型. 我们只需要平面图转转对偶图,将图中每个面变成点,连边跑最短路即可. 转换的细节可能有些麻烦,大家慢慢理解. 代码: #include<bits/stdc++.h> #define pi pair<int,int…
http://www.lydsy.com/JudgeOnline/problem.php?id=2007 1.所有点的高度一定在0~1之间, 如果有一个点的高度超过了1,那么必定会有人先上坡,再下坡,一定不如一直上坡优 2.所有点高度一定可以转化为非0即1 比如:0->0.3->0.5->1 等价于0->1 3.上了坡之后一定不会再下坡,下了坡之后一定不会再上坡 综上所述,就是找一条01分界线,线的左上方高度为0,右下方高度为1 很明显是最小割 转对偶图 跑最短路 注意:这张图是有…
1.题意:一个裸的最小割 2.分析:直接转成对偶图最短路就好了,水爆了!(雾) #include <queue> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; #define M 2000010 #define inf 1014748364 inline int read(){ char ch =…
Time Limit: 20 Sec  Memory Limit: 552 MB Submit: 2380  Solved: 1130 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个 正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路 (简称道路),每条双向道路连接主干道上两个相邻的交叉路口.下图为一张YT市的地图(n = 2),城市被划分为2…