vijosP1006 晴天小猪历险记之Hill

链接:https://vijos.org/p/1006

【思路】

图上DP。

这个题的递推顺序是关键。先从上一行得到最小值,然后从本行比较最小值,注意本行、本行与上一行之间的第一段与最后一段是相通的。

【代码】

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstring>
  4. #define FOR(a,b,c) for(int a=(b);a<=(c);a++)
  5. using namespace std;
  6.  
  7. const int maxn = +;
  8. const int INF=<<;
  9.  
  10. int w[maxn][maxn],d[maxn][maxn];
  11. int n;
  12.  
  13. int main()
  14. {
  15. scanf("%d",&n);
  16. FOR(i,,n) FOR(j,,i) scanf("%d",&w[i][j]);
  17. memset(d,,sizeof(d));
  18. d[n][]=;
  19. FOR(i,,n) d[n][i]=d[n][i-]+w[n][i];
  20. for(int i=n-;i;i--)
  21. {
  22. FOR(j,,i) {
  23. if(j==)
  24. d[i][j]=min(d[i+][i+],min(d[i+][j],d[i+][j+]))+w[i][j];
  25. else if(j==i) {
  26. d[i][j]=min(d[i+][],min(d[i+][j],d[i+][j+]))+w[i][j];
  27. }
  28. else
  29. d[i][j]=min(d[i+][j],d[i+][j+]) + w[i][j];
  30. }
  31. d[i][] = min(d[i][],d[i][i]+w[i][]);
  32. FOR(j,,i) d[i][j] = min(d[i][j],d[i][j-] + w[i][j]);
  33. for(int j=i-;j;j--) d[i][j] = min(d[i][j],d[i][j+] + w[i][j]);
  34. }
  35. printf("%d\n",d[][]);
  36. return ;
  37. }

vijosP1006 晴天小猪历险记之Hill的更多相关文章

  1. Vijos1006P1006晴天小猪历险记之Hill[最短路]

    P1006晴天小猪历险记之Hill Accepted 标签:晴天小猪历险记[显示标签]     背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结……不过有一 ...

  2. Vijos 1006 晴天小猪历险记之Hill 单源单汇最短路

    背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物.所以晴天小猪自告奋勇 ...

  3. vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化

    题目链接:https://vijos.org/p/1006 数字三角形原题看这里:http://www.cnblogs.com/huashanqingzhu/p/7326837.html 背景 在很久 ...

  4. 【vijos】1006 晴天小猪历险记之Hill(dijkstra)

    https://vijos.org/p/1006 连边后跑点权的最短路 注意连边的时候左端点可以连到下一行的右端点,右端点可以连到下一行的左端点 #include <cstdio> #in ...

  5. 晴天小猪历险记之Hill(Dijkstra优先队列优化)

    描述 这一天,他来到了一座深山的山脚下,因为只有这座深山中的一位隐者才知道这种药草的所在.但是上山的路错综复杂,由于小小猪的病情,晴天小猪想找一条需时最少的路到达山顶,但现在它一头雾水,所以向你求助. ...

  6. dp式子100个……

    1.        资源问题1-----机器分配问题F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2------01背包问题F[I,j]:=max(f[i- ...

  7. dp方程

    1.        资源问题1 -----机器分配问题 F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2 ------01背包问题   F[I,j]:=ma ...

  8. [SinGuLaRiTy] 动态规划题目复习

    [SinGuLaRiTy-1026] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. [UVA 1025] A Spy in the Metr ...

  9. 信息安全-2:python之hill密码算法[原创]

    转发注明出处:http://www.cnblogs.com/0zcl/p/6106513.html 前言: hill密码算法我打算简要介绍就好,加密矩阵我用教材上的3*3矩阵,只做了加密,解密没有做, ...

随机推荐

  1. 数位DP入门Ural1057

    CF一战让我觉得很疲倦,所以今天感觉很慢. 昨天解D题时候,因为太累,根本连题目都没看,今天看了之后感觉不会做,听闻是数位DP问题. 有某神说过,DP的功力建立在刷过的题上,我真的毫无功力可言. 介绍 ...

  2. 解决Mysql的主从数据库没有同步的两种方法

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常.show master status; ...

  3. Fedora 17 修改GRUB启动菜单顺序

    Fedora 16采用GRUB2,因此启动菜单编辑方式与以前版本有所不同 设置默认启动Windows 1. 首先找到Windows的menuentry # cat   /boot/grub2/grub ...

  4. <汇编语言系列>计算机硬件系统与汇编

    寒假时,有幸拜读了卡内基-梅隆大学(CMU)的Randal E.Bryant 和 David R.O'Hallaron的名著——深入理解计算机系统(Computer System: A Program ...

  5. Linux 进程编程

    Linux通过维护者五个状态来调度进程的运行.这五个状态分别为:运行.可中断.不可中断.僵死.停止 . PID来标识不同的进程的,Linux中每一个进程都有一个唯一的进程号 . PCB块就是一个进程资 ...

  6. php计算最后一次,第一次字符串出现位置

    strpos($str, n) 首次,n在str第一次出现位置, strrpos($str, n) 最后一次,n在str最后一次出现位置 strripos区分大小写

  7. PHP模块设计

    1.强内聚,功能尽量在类的内部完成 2.弱耦合,开放尽量少的方法给外部调用

  8. web系列教程之php 与mysql 动态网站 。检索 与更新。

    接着上次WEb 系列开发之php 与mysql动态网站入门. 个人觉得,学习技术就像一棵大树,主干很重要,枝叶其次.对于学习技术,我们应该分清主次关系.怎么学?为什么要学?有一个较好的分寸. 有时候觉 ...

  9. Instructions Set JAVA_HOME System-Wide

    Instructions Set JAVA_HOME System-Wide 1 Start a root terminal session and then change directories t ...

  10. css 浮动 相对定位 绝对定位区别

    今天下班在地铁上看了一个样式教学视频,因为最近在学习前端.以前刚毕业的时候,感觉后台才是王道,但最近发现,前端也很重要,比如:自己接一些私单做的时候,自己要根据需求做好界面,才能更加符合客户需求,不然 ...