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 ...
随机推荐
- python-网络编程requests模块
urllib模块去请求的确比较麻烦,需要不断的encode和decode:而requests模块就比较方便了,它是基于requests模块开发的第三方模块,安装简单只需要 pip install r ...
- Nginx 日志切割(Logrotate)
Logrotate 配置文件 # ls /etc/logrotate.* /etc/logrotate.conf /etc/logrotate.d: cups dracut fmdcn httpd i ...
- PS把一张白色背景的图片设为透明
方法一: 1.双击图层缩略图上的小锁图标(注意,这里不要拖动小锁进行删除锁定),弹出“新建图层”,确定 2.右键左侧第四个功能菜单,选择魔棒工具 3.用魔棒工具在白色背景区域点击一下,选中白色区域背景 ...
- github创建仓库,往github上上传自己的项目
k第一步: 在github上创建仓库 第二步: 创建一个新的项目,填写项目名称,描述 创建完成之后,跳转到下面的页面,下面红框中的网址要记住,在后面上传代码的时候需要使用 这个地址必须要记住!!! 第 ...
- linux中编写查看内存使用率的shell脚本,并以高亮颜色输出结果
编辑脚本内容: #!/bin/bash MEMUSER=`free -m|grep -i mem|awk '{print $3/$2*100"%"}'` echo -e " ...
- g50打开无线设置 fn+f7
- [Git] 004 初识 Git 与 GitHub 之查看历史记录
在 GitHub 的 UI 界面使用 Git 查看历史纪录 1. 右侧有个 history 2. 点击后跳转页面 3. 点击相应标题(commit 时写的),进入相应版本(历史) 4. 我选择了 I ...
- new String创建了几个对象
String str = new String(“abc”) 到底创建了几个对象? 首先String str是定义了一个字符串变量,并未产生对象,=不产生对象,那么只有后面的new String(& ...
- poj-3436.ACM Computer Factory(最大流 + 多源多汇 + 结点容量 + 路径打印 + 流量统计)
ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10940 Accepted: ...
- POJ-2287.Tian Ji -- The Horse Racing (贪心)
Tian Ji -- The Horse Racing Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 17662 Acc ...