BZOJ4152 AMPPZ2014 The Captain 【最短路】【贪心】*
BZOJ4152 AMPPZ2014 The Captain
Description
给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用。
Input
第一行包含一个正整数n(2<=n<=200000),表示点数。
接下来n行,每行包含两个整数x[i],yi,依次表示每个点的坐标。
Output
一个整数,即最小费用。
Sample Input
5
2 2
1 1
4 5
7 1
6 7
Sample Output
2
一开始想到了分别按X和Y排序,把相邻的点建边
结果后来RE了,因为有可能有很多个点的纵坐标或者横坐标相等,这样判断很不优秀
然后想一想有哪些边是可以减掉不要的
如果按照X排序的时候y值的差还要比x小,那么这条边显然是没有意义或者可以被代替掉的,所以每次我们加边就判断一下x和y的差,然后贪心加边,边数还是O(n)的
然后就做完了
#include<bits/stdc++.h>
using namespace std;
#define N 200010
#define pi pair<int,int>
#define mp make_pair
#define LL long long
struct Node{int x,y,id;}p[N];
struct Edge{int v,w,next;}E[N<<3];
int n,tot=0,head[N];
LL d[N];
bool cmpx(Node a,Node b){return a.x<b.x;}
bool cmpy(Node a,Node b){return a.y<b.y;}
void add(int u,int v,int w){
E[++tot]=(Edge){v,w,head[u]};head[u]=tot;
E[++tot]=(Edge){u,w,head[v]};head[v]=tot;
}
void Dijk(){
priority_queue<pi,vector<pi>,greater<pi> > q;
memset(d,0x3f,sizeof(d));
d[1]=0;
q.push(mp(0,1));
while(!q.empty()){
int u=q.top().second;q.pop();
for(int i=head[u];i;i=E[i].next){
int v=E[i].v;
if(d[v]>d[u]+E[i].w){
d[v]=d[u]+E[i].w;
q.push(mp(d[v],v));
}
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d%d",&p[i].x,&p[i].y),p[i].id=i;
sort(p+1,p+n+1,cmpx);
for(int i=1;i<n;i++)
if(p[i+1].x-p[i].x<=abs(p[i+1].y-p[i].y))add(p[i].id,p[i+1].id,p[i+1].x-p[i].x);
sort(p+1,p+n+1,cmpy);
for(int i=1;i<n;i++)
if(p[i+1].y-p[i].y<=abs(p[i+1].x-p[i].x))add(p[i].id,p[i+1].id,p[i+1].y-p[i].y);
Dijk();
printf("%lld",d[n]);
return 0;
}
BZOJ4152 AMPPZ2014 The Captain 【最短路】【贪心】*的更多相关文章
- bzoj4152[AMPPZ2014]The Captain 最短路
4152: [AMPPZ2014]The Captain Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1517 Solved: 603[Submi ...
- 【BZOJ4152】[AMPPZ2014]The Captain 最短路
[BZOJ4152][AMPPZ2014]The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1 ...
- BZOJ 4152: [AMPPZ2014]The Captain( 最短路 )
先按x排序, 然后只有相邻节点的边才有用, 我们连起来, 再按y排序做相同操作...然后就dijkstra ---------------------------------------------- ...
- BZOJ4152 AMPPZ2014 The Captain(最短路)
事实上每次走到横坐标或纵坐标最接近的点一定可以取得最优方案.于是这样连边跑最短路就可以了. #include<iostream> #include<cstdio> #inclu ...
- bzoj4152 [AMPPZ2014]The Captain
最短路,先将x排序,然后把排序后权值相邻的点连边,再把y排序,也把权值相邻的点连边,求一遍1到n的最短路就好啦. 代码 #include<cstdio> #include<queue ...
- 【BZOJ4152】The Captain(最短路)
[BZOJ4152]The Captain(最短路) 题面 BZOJ Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求 ...
- 循环队列+堆优化dijkstra最短路 BZOJ 4152: [AMPPZ2014]The Captain
循环队列基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零: (2)当队列不为空时,fr ...
- 【BZOJ】4152: [AMPPZ2014]The Captain【SLF优化Spfa】
4152: [AMPPZ2014]The Captain Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2107 Solved: 820[Submi ...
- bzoj 4152[AMPPZ2014]The Captain
bzoj 4152[AMPPZ2014]The Captain 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. ...
随机推荐
- angular之自定义 directive
1,指令的创建至少需要一个带有@Directive装饰器修饰的控制器类.@Directive装饰器指定了一个选择器名称,用于指出与此指令相关联的属性的名字. 2,创建一个highlight.direc ...
- 什么是JSON?
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标注. {} 双 ...
- [洛谷U63006]导函数最小系数
U63006 导函数最小系数 题面 给出一个n次函数\(f(x)=a_{n}x^{n}+a_{n-1}x^{n-1}+...+a_{1}x+a_0\)的各项系数\(a_n,a_{n-1}...a_1, ...
- vue项目搭建 (一)
vue项目搭建 (一) 由于一直想要有自己的框架,因而一直在尝试搭建各类结构,结合vue官网及git上大神bailicangdu的项目,再看看网上一些意见,及个人思考,总结的一些,不到之处希望大家可以 ...
- 文件上传及时显示, 前端js和后端php相互结合使用
文件读取 javascript 绑定文件上传变化事件 onchange 利用window对象 FileReader 调用方法 readerAsDataURL onload 方法 异步读取 属性:fil ...
- shiro权限定义的三种方法
1.在配置文件中定义 <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFa ...
- Java进阶2 数组内存和对象的内存管理知识
Java进阶2 数组内存和对象的内存管理知识 20131028 前言: 在面试的时候,如果是Java的编程语言,也许你认为没有什么可以问的,只能够说明你对于Java了解的太浅了,几乎就是两个星期的节奏 ...
- Java复习4.数组初始化.
Java复习4.Java中的数组声明方式 20131004 1.数组声明和初始化, 数组元素和变量一样,可以在定义的时候i进行初始化.数组元素的初始化工作实在编译阶段完成的,可以减少运行时间. 在初 ...
- 【zzuli-1923】表达式求值
题目描述 假设表达式定义为:1. 一个十进制的正整数 X 是一个表达式.2. 如果 X 和 Y 是 表达式,则 X+Y, X*Y 也是表达式; *优先级高于+.3. 如果 X 和 Y 是 表达式,则 ...
- LeetCode OJ : Different Ways to Add Parentheses(在不同位置增加括号的方法)
Given a string of numbers and operators, return all possible results from computing all the differen ...