BZOJ2007——[Noi2010]海拔
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 = getchar(); int x = 0, f = 1;
while(ch < '0' || ch > '9'){
if(ch == '-') f = -1;
ch = getchar();
}
while('0' <= ch && ch <= '9'){
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
namespace dijkstra{
struct Edge{
int u, v, w, next;
} G[M];
int head[M], tot;
struct Node{
int d, u;
inline bool operator < (const Node& rhs) const{
return d > rhs.d;
}
};
priority_queue<Node> Q;
int d[M];
bool done[M];
inline void init(){
memset(head, -1, sizeof(head));
tot = 0;
}
inline void add(int u, int v, int w){
// printf("%d %d %d\n", u, v, w);
G[++ tot] = (Edge){u, v, w, head[u]};
head[u] = tot;
}
inline int get_dis(int s, int t, int n){
memset(done, 0, sizeof(done));
for(int i = 0; i <= n; i ++) d[i] = inf;
d[s] = 0;
Q.push((Node){0, s});
while(!Q.empty()){
Node u = Q.top(); Q.pop();
int x = u.u;
if(done[x]) continue;
done[x] = 1;
for(int i = head[x]; i != -1; i = G[i].next){
Edge& e = G[i];
if(d[e.v] > d[x] + e.w){
d[e.v] = d[x] + e.w;
Q.push((Node){d[e.v], e.v});
}
}
}
return d[t];
}
}
using namespace dijkstra;
int n;
inline int num(int i, int j){
if(j < 1 || i > n) return 0;
if(i < 1 || j > n) return n * n + 1;
return (i - 1) * n + j;
}
int main(){
n = read();
init();
for(int i = 0; i <= n; i ++){
for(int j = 1; j <= n; j ++){
int x = read();
add(num(i + 1, j), num(i, j), x);
}
}
for(int i = 1; i <= n; i ++){
for(int j = 0; j <= n; j ++){
int x = read();
add(num(i, j), num(i, j + 1), x);
}
}
for(int i = 0; i <= n; i ++){
for(int j = 1; j <= n; j ++){
int x = read();
add(num(i, j), num(i + 1, j), x);
}
}
for(int i = 1; i <= n; i ++){
for(int j = 0; j <= n; j ++){
int x = read();
add(num(i, j + 1), num(i, j), x);
}
}
printf("%d\n", get_dis(0, n * n + 1, n * n + 1));
return 0;
}
BZOJ2007——[Noi2010]海拔的更多相关文章
- Bzoj2007 [Noi2010]海拔(平面图最短路)
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2742 Solved: 1318[Submit][Status] ...
- [BZOJ2007][NOI2010]海拔(对偶图最短路)
首先确定所有点的海拔非0即1,问题转化成裸的平面图最小割问题,进而转化成对偶图最短路(同BZOJ1002). 这题的边是有向的,所以所有边顺时针旋转90度即可. 如下图(S和T的位置是反的). #in ...
- Bzoj2007 [Noi2010]海拔
Time Limit: 20 Sec Memory Limit: 552 MB Submit: 2380 Solved: 1130 Description YT市是一个规划良好的城市,城市被东西向 ...
- bzoj2007 NOI2010 海拔(对偶图)
80分(最小割)思路 先考虑如果没有题目中东南角为\(1\)那个限制的话会怎样. 那么只要让每个点的海拔都是\(0\)就行了.这样不论怎样走,最后的答案都是0. 然后再考虑那个东南角为\(1\)的限制 ...
- BZOJ2007 [Noi2010]海拔 【平面图最小割转对偶图最短路】
题目链接 BZOJ2007 题解 这是裸题啊,,要是考试真的遇到就好了 明显是最小割,而且是有来回两个方向 那么原图所有向右的边转为对偶图向下的边 向左的边转为向上 向下转为向左 向上转为向右 然后跑 ...
- bzoj千题计划129:bzoj2007: [Noi2010]海拔
http://www.lydsy.com/JudgeOnline/problem.php?id=2007 1.所有点的高度一定在0~1之间, 如果有一个点的高度超过了1,那么必定会有人先上坡,再下坡, ...
- BZOJ2007 NOI2010 海拔 平面图转对偶图 最小割
题面太长啦,请诸位自行品尝—>海拔 分析: 这是我见过算法比较明显的最小割题目了,很明显对于某一条简单路径,海拔只会有一次变换. 而且我们要最终使变换海拔的边权值和最小. 我们发现变换海拔相当于 ...
- 【BZOJ2007】[Noi2010]海拔 对偶图最短路
[BZOJ2007][Noi2010]海拔 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看 ...
- BZOJ 2007: [Noi2010]海拔
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2410 Solved: 1142[Submit][Status] ...
随机推荐
- USACO2.4 The Tamworth Two[模拟]
题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和John). 追击在10x10的平面网格内进行.一个格子可以是: 一个障碍物, 两头牛(它们总 ...
- PAT 1040. 有几个PAT(25)
字符串APPAPT中包含了两个单词"PAT",其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问 ...
- PAT 1032. 挖掘机技术哪家强(20)
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过105的正整数N,即参赛人数.随后N行,每行给出一位 ...
- BZOJ 1853 【Scoi2010】 幸运数字
Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认 为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,8 ...
- Python-11-RabbitMQ、Redis使用
RabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...
- Web前端之复选框选中属性
熟悉web前端开发的人都知道,判断复选框是否选中是经常做的事情,判断的方法很多,但是开发过程中常常忽略了这些方法的兼容性,而是实现效果就好 了.博主之前用户不少方法,经常Google到一些这个不好那个 ...
- IT行业的技术类岗位分为许多种,如何判断自己适合哪种?
A.硬件工程师B.软件工程师C.UI设计师D.仿真工程师E.ERP工程师F.集成工程师G.系统架构设计师H.数据库工程师I.网络管理员J.网络安全工程师K.网站架构设计师L.网页设计M.Flash设计 ...
- Matlab2015矩阵表示03
1. 矩阵表示 >>行元素分隔: 空格'space'或逗号',' >>列分隔: 分号或回车换行符 2. 冒号表达式 1) start:end 2) start: step : ...
- spring mvc 项目聚合
创建一个maven 项目当父项目 创建时选择默认就可以 创建完成后 修改 pom.xml文件 把 packaging 的war改为pom <modelVersion>4.0.0</ ...
- Oracle11g字符集AL32UTF8修改为ZHS16GBK详解【转】
------感谢作者,确实解决了问题.分享下,希望帮到更多人 此问题发生在数据库迁移过程中.源数据库:自己笔记本上win7 64位系统的oracle11g个人版,字符集ZHS16GBK :目标数据库, ...