luogu2046 海拔
题目链接[NOI2010]海拔
首先有个性质就是海拔只会有\(0\)和\(1\)两种。
证明:海拔下降和人数乘积为总消耗,确定了海拔下降总数,如果有个地方可以使得单位消耗最小,那么全部消耗不会更劣。
也就是求一个最小割,转化成对偶图。
左边是\(t\),右边是\(s\),上面是\(s\),下面是\(t\),这样保证了一条合法路径一定隔开了整个格子。
相邻格子连边权,上到下连左,左到右连下,其他相反,跑最短路即可。
代码:
// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define R register int
#define ll long long
using namespace std;
const int N=400001;
const int yl=501;
const int M=5000001;
int cnt,n,u,s,t,tot,nt[M],to[M],hd[N],w[M],idx[yl][yl],Dis[N],vis[N];
void link(R f,R t,R d){nt[++cnt]=hd[f],to[cnt]=t,w[cnt]=d,hd[f]=cnt;}
int gi(){
R x=0,k=1;char c=getchar();
while((c<'0'||c>'9')&&c!='-')c=getchar();
if(c=='-')k=-1,c=getchar();
while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();
return x*k;
}
struct ip{int val,id;};
int operator < (ip x,ip y){return x.val>y.val;}
priority_queue<ip>Q;
int dij(){
while(!Q.empty())Q.pop();
memset(Dis,0x7f,sizeof(Dis));
Dis[s]=0,Q.push((ip){0,s});
while(!Q.empty()){
ip S=Q.top();Q.pop();
if(vis[S.id])continue;vis[S.id]=1;
if(S.id==t)return Dis[t];
for(R k=hd[S.id];k;k=nt[k])
if(Dis[to[k]]>Dis[S.id]+w[k]){
Dis[to[k]]=Dis[S.id]+w[k];
Q.push((ip){Dis[to[k]],to[k]});
}
}
return Dis[t];
}
int main(){
n=gi();
for(R i=1;i<=n;++i)
for(R j=1;j<=n;++j)
idx[i][j]=(++tot);
s=tot+1,t=tot+2;
for(R i=1;i<=n;++i)
u=gi(),link(s,idx[1][i],u);
for(R i=2;i<=n;++i)
for(R j=1;j<=n;++j)
u=gi(),link(idx[i-1][j],idx[i][j],u);
for(R i=1;i<=n;++i)
u=gi(),link(idx[n][i],t,u);
//bei nan
for(R i=1;i<=n;++i){
u=gi(),link(idx[i][1],t,u);
for(R j=1;j<n;++j)
u=gi(),link(idx[i][j+1],idx[i][j],u);
u=gi(),link(s,idx[i][n],u);
}
//xi dong
for(R i=1;i<=n;++i)u=gi();
for(R i=2;i<=n;++i)
for(R j=1;j<=n;++j)
u=gi(),link(idx[i][j],idx[i-1][j],u);
for(R i=1;i<=n;++i)u=gi();
//nan bei
for(R i=1;i<=n;++i){
u=gi();
for(R j=1;j<n;++j)
u=gi(),link(idx[i][j],idx[i][j+1],u);
u=gi();
}
printf("%d\n",dij());
return 0;
}
luogu2046 海拔的更多相关文章
- luogu2046[NOI2010]海拔 对偶图优化
luogu2046[NOI2010]海拔 对偶图优化 链接 https://www.luogu.org/problemnew/show/P2046 思路 海拔一定是0或者1,而且会有一条01交错的分界 ...
- Luogu2046 NOI2010 海拔 平面图、最小割、最短路
传送门 首先一个不知道怎么证的结论:任意点的\(H\)只会是\(0\)或\(1\) 那么可以发现原题的本质就是一个最小割,左上角为\(S\),右下角为\(T\),被割开的两个部分就是\(H=0\)与\ ...
- BZOJ 2007: [Noi2010]海拔
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2410 Solved: 1142[Submit][Status] ...
- NOI 2010 海拔 ——平面图转对偶图
[题目分析] 可以知道,所有的海拔是0或1 最小割转最短路,就可以啦 SPFA被卡,只能换DIJ [代码] #include <cstdio> #include <cstring&g ...
- 【BZOJ-2007】海拔 最小割 (平面图转对偶图 + 最短路)
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2095 Solved: 1002[Submit][Status] ...
- Bzoj2007 [Noi2010]海拔
Time Limit: 20 Sec Memory Limit: 552 MB Submit: 2380 Solved: 1130 Description YT市是一个规划良好的城市,城市被东西向 ...
- 2007: [Noi2010]海拔 - BZOJ
Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)× ...
- NOI2010海拔
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 1302 Solved: 612[Submit][Status] ...
- Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)
CoreLocation是iOS中一个提供设备定位的框架.通过这个框架可以实现定位处理,从而获取位置数据,比如经度.纬度.海拔信息等. 1,定位精度的设置 定位服务管理类CLLocationMan ...
随机推荐
- skip a transaction in goldengate
skip a transaction in goldengate [oracle@db ]$ ggsci Oracle GoldenGate Command Interpreter for Oracl ...
- iOS即时通讯之CocoaAsyncSocket源码解析一
申明:本文内容属于转载整理,原文连接 前言: CocoaAsyncSocket是谷歌的开发者,基于BSD-Socket写的一个IM框架,它给Mac和iOS提供了易于使用的.强大的异步套接字库,向上封装 ...
- PHP模拟请求和操作响应
模拟请求 fsockopen <?php // 建立连接 $link = fsockopen('localhost', '80'); define('CRLF', "\r\n" ...
- kafka 和 rocketMQ 的数据存储
kafka 版本:1.1.1 一个分区对应一个文件夹,数据以 segment 文件存储,segment 默认 1G. 分区文件夹: segment 文件: segment 的命名规则是怎样的? kaf ...
- Openstack_通用模块_Oslo_vmware 创建/删除 vCenter 虚拟机
目录 目录 oslovmware Connect to vCenter Server Create VirtualMachine for vCenter 常用的虚拟机配置项 删除虚拟机 oslo.vm ...
- [转载]X509证书中RSA公钥的提取与载入 pem key
原地址:https://blog.csdn.net/anddy926/article/details/8940377 由于项目需要,我计划利用openssl开发一个基本的CA,实现证书的发放等功能.在 ...
- flutter dialog异常Another exception was thrown: No MaterialLocalizations found
flutter dialog异常Another exception was thrown: No MaterialLocalizations found import 'package:flutter ...
- C#—Nhibernate使用教程
本篇文章,让我们一起来探索Nhibernate.首先我们去搜索Nhibernate下载地址,如下链接所示.该版本可能是最新版,我下载的4.0.4.GA.其中GA意思我没搞清楚.不过应该不重要.http ...
- django-xadmin设置全局变量
class GlobalSetting(object): site_title = '自己的命名' site_footer = '底部命名'# 收缩菜单 menu_style = 'accordion ...
- 【GTS】关于GtsTetheringTestCases模块的几个失败项
GTS---关于GtsTetheringTestCases模块的几个失败项 1.run gts -m GtsTetheringTestCases -t com.google.android.tethe ...