【题解】

  裸的最短路。直接跑dijkstra即可。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 #define LL long long
 5 #define rg register
 6 #define N 200010
 7 using namespace std;
 8 int n,tot,last[N],dis[N],pos[N];
 9 struct edge{
10     int to,pre,dis;
11 }e[N];
12 struct heap{
13     int poi,dis;
14 }h[N];
15 inline int read(){
16     int k=0,f=1; char c=getchar();
17     while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
18     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
19     return k*f;
20 }
21 inline void up(int x){
22     int fa;
23     while((fa=(x>>1))&&h[fa].dis>h[x].dis)
24         swap(h[fa],h[x]),swap(pos[h[fa].poi],pos[h[x].poi]),x=fa;
25 }
26 inline void down(int x){
27     int son;
28     while((son=(x<<1))<=tot){
29         if(h[son].dis>h[son+1].dis&&son<tot) son++;
30         if(h[son].dis<h[x].dis)
31             swap(h[son],h[x]),swap(pos[h[son].poi],pos[h[x].poi]),x=son;
32         else return;
33     }
34 }
35 inline void dijkstra(int x){
36     for(rg int i=1;i<=n;i++) dis[i]=1e9;
37     h[tot=pos[x]=1]=(heap){x,dis[x]=0};
38     while(tot){
39         int now=h[1].poi; h[1]=h[tot--]; if(tot) down(1);
40         for(rg int i=last[now],to;i;i=e[i].pre)
41         if(dis[to=e[i].to]>dis[now]+e[i].dis){
42             dis[to]=dis[now]+e[i].dis;
43             if(!pos[to]) h[pos[to]=++tot]=(heap){to,dis[to]};
44             else h[pos[to]].dis=dis[to];
45             up(pos[to]);
46         }
47         pos[now]=0;
48     }
49 }
50 int main(){
51     n=read();
52     for(rg int i=1;i<=n;i++)
53         for(rg int j=i+1;j<=n;j++) e[++tot]=(edge){j,last[i],read()},last[i]=tot;
54     dijkstra(1);
55     printf("%d\n",dis[n]);
56     return 0;
57 }

View Code

转载于:https://www.cnblogs.com/DriverLao/p/9398059.html

洛谷 1359 租用游艇相关推荐

  1. 【洛谷P1359租用游艇】

    洛谷P1359租用游艇 为什么想到dp: 比它小的点能转移到它 类似于数字三角形模型 类似于贪心,或者说无后效性,一旦前面某个点确定了最小值,那么后面对其无影响 思路:根据题意,只有小的点能转移到大的 ...

  2. 洛谷 P1359 租用游艇

    题目描述 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,-,n.游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇.游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1& ...

  3. 洛谷P1359 租用游艇

    题目描述 长江游艇俱乐部在长江上设置了 n 个游艇出租站 1,2,⋯,n.游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇.游艇出租站 i到游艇出租站 j之间的租金为 r(i,j) ...

  4. 洛谷P1359租用游艇

    建议跟着我的代码自己打个表就懂了 #include<iostream> using namespace std; int n; int t[205][205];//时间 int dp[20 ...

  5. P1359 租用游艇 洛谷

    https://www.luogu.org/problem/show?pid=1359 题目描述 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,-,n.游客可在这些游艇出租站租用游艇,并在下游的 ...

  6. 【洛谷】P1359 租用游艇

    题目描述 长江游艇俱乐部在长江上设置了 n 个游艇出租站 1,2,⋯ ,n.游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇.游艇出租站 i 到游艇出租站 j 之间的租金为 r(i ...

  7. 洛谷 租用游艇 C++ Dijkstra 单源最短路/dp

    题目描述 长江游艇俱乐部在长江上设置了 n 个游艇出租站 1,2,⋯,n.游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇.游艇出租站 i 到游艇出租站 j 之间的租金为 r(i, ...

  8. CSP-J冲刺 P1359 租用游艇

    题目弹射机:租用游艇 - 洛谷 看完题后,你可以很快对输入进行判断:定义a[i][j]为从i->j的租金 然后就是激(suǒ)动(rán)人(wú)心(wèi)的推导转移方程的环节. 第一步:画 ...

  9. luogu1359 租用游艇

    http://www.elijahqi.win/archives/1614 题目描述 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,-,n.游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇 ...

最新文章

  1. mysql替换开头_如何在MySQL的字符串开头搜索和替换特定字符?
  2. 基于AOA协议的android USB通信
  3. LeetCode Linked List Cycle II(floyd cycle)
  4. 【Java后端】三目运算符失效问题刨根问底(及NPE分析)
  5. spring-boot-devtools 热部署
  6. keil MDK中如何生成*.bin格式的文件
  7. linux下看io等待时间,Linux下用iostat探测IO使用情况
  8. Movie Thumbnails Maker Mac(MTM)使用指南
  9. 京东万能转链API接口 含商品信息优惠券转链 京东线报如何转链?
  10. java jasperReports导出PDF字体加粗失效
  11. 【历史上的今天】10 月 24 日:1024 程序员节;中文维基百科上线;iPad mini 诞生十周年
  12. 多线程基础之四:Linux提供的原子锁类型atomic_t
  13. 小仙女讲JVM(1)—综述
  14. 学习Python的做笔记神器——Jupyter Notebook
  15. 图扑数字孪生智慧社区,助力社区数字化转型
  16. 让你平步青云的10个谈话技巧
  17. python编程练习:提取Visual MODFLOW水均衡数据(.ZOT)文件至表格
  18. 使用stm32cubeIDE建立USB HOST工程读取大容量U盘(MSC类库)
  19. WPF ListBox
  20. 【数据结构C语言-队列】舞伴配对

热门文章

  1. CSS || 三栏布局,两边固定,中间自适应
  2. 浅谈RAID写惩罚(Write Penalty)与IOPS计算
  3. 从vmware技术团队跳槽到微软技术团队(comlan)
  4. 编写高性能的 Lua 代码
  5. java IO 解析
  6. 类的内置方法__attr__介绍
  7. vue 项目 常用package.json
  8. c# 任务栏托盘图标鼠标进入MouseEnter和鼠标离开MouseLeave实现
  9. href=#与href=javascriptvoid(0)的区别
  10. CentOS5.9下用Kate