URAL 1029

思路:

dp+记录路径

状态:dp[i][j]表示到(i,j)这个位置为止的最少花费

初始状态:dp[1][i]=a[1][i](1<=i<=m)

状态转移:dp[i][j]=a[i][j]+max(dp[i-1][j],dp[i][j-1],dp[i][j+1])(注意扫的方向不同)

数组记录上一次的坐标,最后递归输出

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define pb push_back
  5. #define mem(a,b) memset(a,b,sizeof(a))
  6.  
  7. const int N=;
  8. const int INF=0x3f3f3f3f;
  9. int a[N][N];
  10. int dp[N][N];
  11. pair<int,int> pre[N][N];
  12. void dfs(int x,int y){
  13. if(x==-||y==-)return ;
  14. dfs(pre[x][y].first,pre[x][y].second);
  15. cout<<y<<' ';
  16. }
  17. int main(){
  18. ios::sync_with_stdio(false);
  19. cin.tie();
  20. int n,m;
  21. mem(a,INF);
  22. mem(dp,INF);
  23. cin>>n>>m;
  24. for(int i=;i<=n;i++){
  25. for(int j=;j<=m;j++){
  26. cin>>a[i][j];
  27. }
  28. }
  29. for(int i=;i<=n;i++)for(int j=;j<=m;j++)pre[i][j].first=-,pre[i][j].second=-;
  30. for(int i=;i<=m;i++)dp[][i]=a[][i];
  31. for(int i=;i<=n;i++){
  32. for(int j=;j<=m;j++){
  33. if(dp[i][j]>a[i][j]+dp[i-][j]){
  34. dp[i][j]=a[i][j]+dp[i-][j];
  35. pre[i][j].first=i-;
  36. pre[i][j].second=j;
  37. }
  38. if(dp[i][j]>a[i][j]+dp[i][j-]){
  39. dp[i][j]=a[i][j]+dp[i][j-];
  40. pre[i][j].first=i;
  41. pre[i][j].second=j-;
  42. }
  43. }
  44. for(int j=m;j>=;j--){
  45. if(dp[i][j]>a[i][j]+dp[i-][j]){
  46. dp[i][j]=a[i][j]+dp[i-][j];
  47. pre[i][j].first=i-;
  48. pre[i][j].second=j;
  49. }
  50. if(dp[i][j]>a[i][j]+dp[i][j+]){
  51. dp[i][j]=a[i][j]+dp[i][j+];
  52. pre[i][j].first=i;
  53. pre[i][j].second=j+;
  54. }
  55. }
  56. }
  57. int ans=INF,id=;
  58. for(int i=;i<=m;i++){
  59. if(dp[n][i]<ans){
  60. ans=dp[n][i];
  61. id=i;
  62. }
  63. }
  64. int x=n,y=id;
  65. dfs(x,y);
  66. cout<<endl;
  67. return ;
  68. }

URAL 1029 Ministry的更多相关文章

  1. DP+路径 URAL 1029 Ministry

    题目传送门 /* 题意:就是从上到下,找到最短路,输出路径 DP+路径:状态转移方程:dp[i][j] = min (dp[i-1][j], dp[i][j-1], dp[i][j+1]) + a[[ ...

  2. Ural 1029 Ministry 题解

    目录 Ural 1029 Ministry 题解 题意 题解 程序 Ural 1029 Ministry 题解 题意 给定一个\(n\times m(1\le n \le10,1\le m \le50 ...

  3. URAL 1732 Ministry of Truth(KMP)

    Description In whiteblack on blackwhite is written the utterance that has been censored by the Minis ...

  4. URAL 1029

    题目大意:M层N列的矩阵(各元素均为正整数),找出一个路径从第一层到达第M层,使得路径上的所有数的和是所有可达路径中最小的,每次上到下一层以后就不能再上去,依次输出路径上的各点在所在层的列数. KB  ...

  5. URAL 1732. Ministry of Truth ( KMP 多模式串匹配 )

    问在第一个串中删掉几个字符能否得到第二个串.注意在第二个串中不连续的单词在第一个串中也必须不连续. 一组数据: Input: abababbbbababbb aba ab Output: I HAVE ...

  6. URAL - 1029 dp

    题意: n层楼,每层楼有m个房间.找出一个路径从第一层到达第M层,使得路径上的所有数的和是所有可达路径中最小的,每次上到下一层以后就不能再上去,依次输出路径上的各点在所在层的列数. 题解: 参考链接: ...

  7. URAL DP第一发

    列表: URAL 1225 Flags URAL 1009 K-based Numbers URAL 1119 Metro URAL 1146 Maximum Sum URAL 1203 Scient ...

  8. ural 1075. Thread in a Space

    1075. Thread in a Space Time limit: 1.0 secondMemory limit: 64 MB There are three points in a 3-dime ...

  9. BZOJ 1029 建筑抢修 贪心+堆

    又搞了一晚上OI,编了两道BZOJ和几道NOI题库,临走之前写两篇感想 noip越来越近了,韩大和clove爷已经开始停课虐我们了... 1029: [JSOI2007]建筑抢修 Time Limit ...

随机推荐

  1. http协议基础(四)http状态码

    一:http状态码 表示客户端http请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作 状态码的类别如下: http状态码种类繁多,大概有60多种,实际上经常使用的只有14种,下面为一 ...

  2. “System.Data”中不存在类型或命名空间名称“TypedTableBase”

    错误 1 命名空间“System.Data”中不存在类型或命名空间名称“TypedTableBase”(是否缺少程序集引用?)  解决方案 因为是把强类型DataSet文件绑定报表的项目中出现的错误, ...

  3. Linux基础命令---cpio

    cpio 从归档中复制文件,或者复制文件到归档中.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. Cpio命令有三种工作模式: 1)c ...

  4. Js基础知识1-数组操作全解

    数组操作全解 js变量类型 var string; var name = "student",age=12; //underfined.null.boolean.string.nu ...

  5. 华为C/C++笔试题&答案

    1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问 ...

  6. python构造栈结构

    栈:是一种先进后出的数据结构:本片文章,我们用python的面向对象来构造这样的数据结构. 栈中的每一个数据除了存储当前的数值外,还存储着当前数值下一个数据的类型(注意不是下一个数据的数值). cla ...

  7. ELK学习笔记之Logstash详解

    0x00 Logstash概述 官方介绍:Logstash is an open source data collection engine with real-time pipelining cap ...

  8. Non-resolvable parent POM

    今天导入公司项目,maven聚合项目,但是项目目录结构不正确,内层的项目的parent不是外层项目,这个......有点无语,结果导入直接报错.同事说,我们导入是好好的啊,原来他们用的是eclipse ...

  9. AS不能在手机上现在调试软件

    这两天遇到的一个问题,(android studio2.0以上的版本),在在线调试应用的时候,将手机上的此程序卸载了,然后准备重新再AS中将这个程序推送到手机上,可是这时候发现不能推送,Log显示什么 ...

  10. Package libvirt was not found in the pkg-config search path

    关于pip安装libvirt-python的时候提示Package libvirt was not found in the pkg-config search path的问题解决方法 1.一开始以为 ...