BZOJ 4152: [AMPPZ2014]The Captain Dijkstra+贪心
Code:
- #include <queue>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #define N 400005
- #define ll long long
- #define setIO(s) freopen(s".in","r",stdin)
- using namespace std;
- ll d[N];
- int n,edges;
- int hd[N],to[N<<1],nex[N<<1],val[N<<1],done[N];
- void addedge(int u,int v,int c)
- {
- nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c;
- swap(u,v);
- nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c;
- }
- struct Point
- {
- int x,y,id;
- }e[N];
- bool cmpx(Point a,Point b)
- {
- return a.x<b.x;
- }
- bool cmpy(Point a,Point b)
- {
- return a.y<b.y;
- }
- struct Node
- {
- int u;
- ll dis;
- Node(int u=0,ll dis=0):u(u),dis(dis){}
- bool operator<(Node b) const
- {
- return b.dis<dis;
- }
- };
- priority_queue<Node>q;
- void Dijkstra()
- {
- int s=1;
- memset(d,0x3f,sizeof(d));
- for(d[s]=0,q.push(Node(s,0));!q.empty();)
- {
- Node e=q.top(); q.pop();
- int u=e.u,i,v;
- if(done[u]) continue;
- done[u]=1;
- for(i=hd[u];i;i=nex[i])
- {
- v=to[i];
- if(d[v]>d[u]+val[i])
- {
- d[v]=d[u]+val[i];
- q.push(Node(v,d[v]));
- }
- }
- }
- }
- int main()
- {
- int i,j,k;
- // setIO("input");
- scanf("%d",&n);
- for(i=1;i<=n;++i)
- {
- int x,y;
- scanf("%d%d",&e[i].x,&e[i].y), e[i].id=i;
- }
- sort(e+1,e+1+n,cmpx);
- for(i=2;i<=n;++i)
- addedge(e[i-1].id,e[i].id,e[i].x-e[i-1].x);
- sort(e+1,e+1+n,cmpy);
- for(i=2;i<=n;++i)
- {
- addedge(e[i-1].id,e[i].id,e[i].y-e[i-1].y);
- }
- Dijkstra();
- printf("%lld\n",d[n]);
- return 0;
- }
BZOJ 4152: [AMPPZ2014]The Captain Dijkstra+贪心的更多相关文章
- bzoj 4152[AMPPZ2014]The Captain
bzoj 4152[AMPPZ2014]The Captain 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. ...
- 循环队列+堆优化dijkstra最短路 BZOJ 4152: [AMPPZ2014]The Captain
循环队列基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零: (2)当队列不为空时,fr ...
- BZOJ 4152: [AMPPZ2014]The Captain( 最短路 )
先按x排序, 然后只有相邻节点的边才有用, 我们连起来, 再按y排序做相同操作...然后就dijkstra ---------------------------------------------- ...
- 【BZOJ】4152: [AMPPZ2014]The Captain【SLF优化Spfa】
4152: [AMPPZ2014]The Captain Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2107 Solved: 820[Submi ...
- 4152: [AMPPZ2014]The Captain
4152: [AMPPZ2014]The Captain Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1561 Solved: 620[Submi ...
- BZOJ4152The Captain[DIjkstra]
4152: [AMPPZ2014]The Captain Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 700 Solved: 266[Submit ...
- 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号点 ...
- 【BZOJ4152】[AMPPZ2014]The Captain 最短路
[BZOJ4152][AMPPZ2014]The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1 ...
随机推荐
- 小白学PYTHON时最容易犯的6个错误
最近又在跟之前的同学一起学习python,一起进步,发现很多测试同学在初学python的时候很容易犯一些错误,特意总结了一下.其实这些错误不仅是在学python时会碰到,在学习其他语言的时候也同样会碰 ...
- javascript获取当前用户访问的宽带IP地址
javascript获取当前用户访问的宽带IP地址 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></sc ...
- SpringBoot热启动让开发更便捷
在开发过程中,当写完一个功能我们需要运行应用程序测试,可能这个小功能中存在多个小bug,我们需要改正后重启服务器,这无形之中拖慢了开发的速度增加了开发时间,SpringBoot提供了spring-bo ...
- docker 入门1 - 方向 【翻译】
开始,第 1 部分:方向和设置 欢迎!我们很高兴您想学习 Docker.Docker 入门教程将教您如何: 设置 Docker 环境(当前步骤) 生成映像并将其作为一个容器运行 缩放应用以运行多个容器 ...
- 作业13:Map相关知识点(一)
一 Map相关类图 二 Map接口 1 Map接口中的方法 jdk 方法名 简单描述 put(K,V):V 添加value,当Key对应无值,返回null;有值则返回上一个值.(覆盖式,可以反复覆盖前 ...
- git merge 命令的使用
我们把dev分支的工作成果合并到master分支上: $ git merge dev Updating d46f35e..b17d20e Fast-forward readme.txt | 1 + 1 ...
- 在QT中添加LIB的方法
注意:-L后面跟着的目录不能用空格,否则会出现读不到的情况. 例如win32下添加D:\app\my.lib 就 pro文件中 LIBS += -LD:\app\debug\ -lmy
- 今日js心得
<input type="hidden" id="history_chart_json" data-json="#{smartDeviceMon ...
- 第一章、接口规范之web-api接口
1.什么是Web API接口 通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介 Web API接口和一般的url链接还是有区别的,Web API接口简单概括有下面四大特点 u ...
- linux 使用 rz 上传和 sz下载 命令
linux系统 root权限 lrzsz安装包 ①.在线安装-执行命令 yum install lrzsz 离线安装-需要提前准备好安装包 编译安装 root 账号登陆后,依次执行以下命令: tar ...