BZOJ2007 NOI2010 海拔 网络流+最短路
题意:给定一个N*N的网格,每个格点均与周围的八个点连边,每条边有一个边权,求安排每个点的点权h,使$\sum\limits_{e \in G} {e.w \times \min \{ ({h_{e.u}} - {h_{e.v}}),0\} }$最小
题解:所有高度一定不是0就是1,而且一定有一条线使得这条线一边是0,另一边是1。显然最小割。然后这是个平面图,Dijkstra随便跑。
#include <queue> #include <functional> #include <cstdio> #include <cstring> #include <cstdlib> #include <climits> #include <iostream> #include <algorithm> using namespace std;const int MAXN=500+2; const int MAXM=6000000+2; struct HASH{int u,w;HASH *next;HASH(){}HASH(int _u,int _w,HASH *_next):u(_u),w(_w),next(_next){} }*table[MAXM],mem[MAXM]; struct EDGE{int u,w;EDGE(){}EDGE(int _u,int _w):u(_u),w(_w){}bool friend operator<(EDGE a,EDGE b){ a.w>a.w;} }; int N,cnt,g[MAXN][MAXN],d[MAXM]; priority_queue<EDGE> q;void Insert(int u,int v,int w){ table[u]=&(mem[cnt++]=HASH(v,w,table[u]));}int Dijkstra(int s,int t){memset(d,0X7F,sizeof(d));d[s]=0,q.push(EDGE(s,0));int x;while(!q.empty()){x=q.top().u,q.pop();for(HASH *p=table[x];p;p=p->next)if(d[p->u]>d[x]+p->w){d[p->u]=d[x]+p->w;q.push(EDGE(p->u,d[p->u]));}}return d[t]; }int main(){cin >> N;cnt=1;for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)g[i][j]=++cnt;for(int i=1;i<=N;i++) g[i][0]=g[N+1][i]=1;cnt=0;for(int i=1,w;i<=N+1;i++)for(int j=1;j<=N;j++){cin >> w;Insert(g[i-1][j],g[i][j],w);}for(int i=1,w;i<=N;i++)for(int j=1;j<=N+1;j++){cin >> w;Insert(g[i][j],g[i][j-1],w);}for(int i=1,w;i<=N+1;i++)for(int j=1;j<=N;j++){cin >> w;Insert(g[i][j],g[i-1][j],w);}for(int i=1,w;i<=N;i++)for(int j=1;j<=N+1;j++){cin >> w;Insert(g[i][j-1],g[i][j],w);}cout << Dijkstra(0,1) << endl;return 0; }
View Code
转载于:https://www.cnblogs.com/WDZRMPCBIT/p/6481360.html
BZOJ2007 NOI2010 海拔 网络流+最短路相关推荐
- 洛谷2046 BZOJ2007 NOI2010 海拔 平面图最小割
题目链接 题意: 给你一个网格图,正反边边权不同,从海拔低的地方到海拔高的地方的代价是海拔差乘边权,海拔高到海拔低的地方不需要代价.左上角海拔是0,右下角海拔是1,让你任意安排其他点的海拔,使得每条边 ...
- bzoj2007: [Noi2010]海拔
今天各位D初一小猴子的情景 你学网络流? 来来来师兄给你来几题? 无源汇有上下界费用流会不会? 最大权闭合子图会不会? 黑白染色会不会? 这都不会? 菜鸡yzh:你能不能不用网络流做狼抓兔子 ... ...
- bzoj 2007 [Noi2010]海拔——最小割转最短路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2007 一个点的高度一定不是0就是1.答案一定形如一个左上角的连通块全是0的点.一个右下角的连 ...
- BZOJ 2007: [Noi2010]海拔
同1001一样,对偶图最小割转最短路 又被卡spfa= = 话说为什么总是有些人总喜欢卡spfa,又好写一般情况又快,为何老是要逼人写迪杰斯特拉= = 要就题目直接说会卡spfa嘛 好吧其实是前几天考 ...
- P4300-[AHOI2006]上学路线【网络流,最短路】
正题 题目链接:https://www.luogu.com.cn/problem/P4300 题目大意 nnn个点mmm条边的无向图.求1∼n1\sim n1∼n的最短路和删除cic_ici和最小的 ...
- NOI2010~NOI2018选做
[NOI2010] [NOI2010]海拔 高度只需要0/1,所以一个合法方案就是一个割,平面图求最小割. [NOI2010]航空管制 反序拓扑排序,每次取出第一类限制最大的放置,这样做答案不会更劣. ...
- 一些有难度的网络流问题
本质是线性规划 最小割建模 NOI2010 海拔 一个的网格,每跳变的两个方向都有一定数目的人流,每个格点都有海拔,一个人爬坡需要付出高度差的代价,下坡不付出代价,左下角高度为,右上角高度为,求安排其 ...
- 网络流题集【夏天的风】
[HDU] 1532Drainage Ditches(基础) [最大流] 3549 Flow Problem(基础) [最大流] 3572 Task Schedule [最大流]任务 ...
- 一句话题解(20170801~20170125)
8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...
最新文章
- 校园网安全问题分析与对策
- seaborn系列 (13) | 点图pointplot()
- 诗与远方:无题(五十七)
- MySQL裸机性能测试(2021)
- C#的Timer解析
- java生成world文件_Hello World 项目创建与项目配置文件介绍
- 4.php 注册树模式
- 【会议记录】软件工程课程设计第一次会议
- 带经纬度的水印相机_经纬度水印相机怎么设置?
- iOS逆向工程开发技巧
- IPv4(分类编址)
- 系统加速精灵:全面提升CPU性能,让你的系统跑的更快!
- 电脑dnf,DNF卡顿如何解决_DNF卡顿如何解决 教你调整电脑参数畅玩游戏_52PKDNF
- geoserver osm 导入_OSM导入PostGreSQL数据库 | 学步园
- 水果店做生意不好怎么办,水果店生意不好如何做好
- 用深度学习做命名实体识别(四)——模型训练
- 2020a matlab文件安装密匙在哪下载?
- MarkDown发生HTML渲染组件出错的解决方案(更新下载连接2022.10.21)
- t-sql 中实现循环处理
- 中国医科大学2021年9月《急危重症护理学》作业考核试题
热门文章
- 载波监听多路访问CSMA以及CSMA/CD详解
- Unity3D基础34.1:打砖块小游戏优化
- 利用SQL语言实现数据库的静态完整性
- C++结构体,联合体与枚举类
- bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍
- bzoj 1009: [HNOI2008]GT考试(dp+kmp+矩阵快速幂)
- bzoj 1432: [ZJOI2009]Function
- [Python] set()函数 创建一个无序不重复元素集
- shell的简单应用
- hdu1247 Hat’s Words