双向DP+记录路径。

// by SiriusRen
#include <stack>
#include <cstdio>
#include <cstring>
using namespace std;
stack<int>s;
int n,m,RECL,RECR,minn=0x3fffffff,a[555][555],f[555][555],recl[555][555],recr[555][555];
int main(){
memset(f,0x3f,sizeof(f));
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]);
for(int i=1;i<=m;i++)f[1][i]=a[1][i];
for(int i=1;i<=n;i++){
for(int j=1;j<m;j++)if(f[i][j]+a[i][j+1]<f[i][j+1])f[i][j+1]=f[i][j]+a[i][j+1],recl[i][j+1]=j,recr[i][j+1]=i;
for(int j=m;j>1;j--)if(f[i][j]+a[i][j-1]<f[i][j-1])f[i][j-1]=f[i][j]+a[i][j-1],recl[i][j-1]=j,recr[i][j-1]=i;
for(int j=1;j<=m;j++)f[i+1][j]=f[i][j]+a[i+1][j],recl[i+1][j]=j,recr[i+1][j]=i;
}
for(int i=1;i<=m;i++)if(minn>f[n][i])minn=f[n][i],RECL=i;
RECR=n;
while(RECR){
s.push(RECL);
int temp=recr[RECR][RECL];
RECL=recl[RECR][RECL];
RECR=temp;
}
while(!s.empty())printf("%d\n",s.top()),s.pop();
}

POJ 2353 DP的更多相关文章

  1. hdu 1513 && 1159 poj Palindrome (dp, 滚动数组, LCS)

    题目 以前做过的一道题, 今天又加了一种方法 整理了一下..... 题意:给出一个字符串,问要将这个字符串变成回文串要添加最少几个字符. 方法一: 将该字符串与其反转求一次LCS,然后所求就是n减去 ...

  2. poj 1080 dp如同LCS问题

    题目链接:http://poj.org/problem?id=1080 #include<cstdio> #include<cstring> #include<algor ...

  3. poj 1609 dp

    题目链接:http://poj.org/problem?id=1609 #include <cstdio> #include <cstring> #include <io ...

  4. POJ 1037 DP

    题目链接: http://poj.org/problem?id=1037 分析: 很有分量的一道DP题!!! (参考于:http://blog.csdn.net/sj13051180/article/ ...

  5. Jury Compromise POJ - 1015 dp (标答有误)背包思想

    题意:从 n个人里面找到m个人  每个人有两个值  d   p     满足在abs(sum(d)-sum(p)) 最小的前提下sum(d)+sum(p)最大 思路:dp[i][j]  i个人中  和 ...

  6. poj 1485 dp

    转自:http://www.cnblogs.com/kuangbin/archive/2011/11/12/2246407.html [题目大意] 一条公路上有n个旅馆,选出其中k个设置仓库,一个仓库 ...

  7. POJ 3017 DP + 单调队列 + 堆

    题意:给你一个长度为n的数列,你需要把这个数列分成几段,每段的和不超过m,问各段的最大值之和的最小值是多少? 思路:dp方程如下:设dp[i]为把前i个数分成合法的若干段最大值的最小值是多少.dp转移 ...

  8. POJ 1661 DP

    Help Jimmy Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11071   Accepted: 3607 Descr ...

  9. POJ 1160 DP

    题目: poj 1160 题意: 给你n个村庄和它的坐标,现在要在其中一些村庄建m个邮局,想要村庄到最近的邮局距离之和最近. 分析: 这道题.很经典的dp dp[i][j]表示建第i个邮局,覆盖到第j ...

随机推荐

  1. 4 Python+Selenium的元素定位方法(link/partial link)

    [环境] Python3.6+selenium3.0.2+IE11+win7 [定位方法] 1.link/partial link定位方法:定位的元素为文字链接且链接很长时 方法:find_eleme ...

  2. 搜索关键词和类目url简短化

    电商网站中有很多搜索关键词或者类目的url往往是一大串的url:有个需求是将长的url如: 域名+/products.html?q=大侠&showtype=img&sort=isTra ...

  3. 基于Nginx的SSL虚拟主机

    通过私钥,证书对站点www.test.com的所有数据加密,实现通过https访问www.test.com 环境说明: 源码安装Nginx时必须使用--with-http_ssl_module参数,启 ...

  4. Java范式1

    package Xwxx; public class Person { private String name; private int age; public Person() { } public ...

  5. 【前端】CSS隐藏元素的方法和区别

    CSS隐藏元素的方法和区别 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  6. [tyvj-1061]Mobile Service 动态规划

    滚动数组优化一波. 原设计状态:表示三个员工分别的位置和执行到的任务. 考虑到:执行完第i个任务,一定有员工在pos[i],那么就可以压一维,空间复杂度就算不滚动数组也可以了. (喜闻乐见,今天第一次 ...

  7. awk的总结

    入门总结 Awk简介 awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告.处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可 ...

  8. Top English interview Q&A

    http://www.hjenglish.com/new/p581292/ vocabulary endeavour [ɪn'devər] relevant ['reləvənt] , efficie ...

  9. 【hihocoder 1032】最长回文子串

    [题目链接]:http://hihocoder.com/problemset/problem/1032 [题意] [题解] 原文地址:https://segmentfault.com/a/119000 ...

  10. Spring事务管理 与 SpringAOP

    1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略.  ...