numtri解题报告 —— icedream61 博客园(转载请注明出处)
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
  有一个数字的金字塔,形状如下
        7
       3 8
      8 1 0
     2 7 4 4
    4 5 2 6 5
  要从顶端开始走,每次只能向左下或者右下走,求所经过的数字之和最大值。
【数据范围】
  1<=R<=1000
  0<=每个数<=100
【输入样例】
  5
  7
  3 8
  8 1 0
  2 7 4 4
  4 5 2 6 5
【输出样例】
  30
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
  DP。
  设num[i][j]为i行j列的数,d[i][j]是从1行1列走到i行j列的当前最优解。
    d[1][1]=num[1][1];
    d[i][j]=0; // i>1 or j>1
  从1行1列走到R行某列的最大值,可以直接递归出来,状态转移方程如下:
    当i==1,j>=2时,d[i][j]=d[i-1][j]+num[i][j];
    当i>=2,j>=2时,d[i][j]=max{d[i-1][j]+num[i][j],d[i-1][j-1]+num[i][j]};
  但本题,递归有边界情况,比较麻烦,递推更方便,状态转移方程如下:
    当i>=2,2<=j<R时
      d[i+1][j]=max{d[i+1][j],d[i][j]+num[i+1][j]};
      d[i+1][j+1]=max{d[i+1][j+1],d[i][j]+num[i+1][j+1]};
  最终,只要扫过d[R][1~R]取得最大值输出即可。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
  一遍AC。

------------------------------------------------------------------------------------------------------------------------------------------------

【代码】

 /*
ID: icedrea1
PROB: numtri
LANG: C++
*/ #include <iostream>
#include <fstream>
using namespace std; int R;
int num[][],d[][]; void change(int &r,int x) { if(x>r) r=x; } int main()
{
ifstream in("numtri.in");
ofstream out("numtri.out"); in>>R;
for(int i=;i<=R;++i)
for(int j=;j<=i;++j) in>>num[i][j]; d[][]=num[][];
for(int i=;i<R;++i)
for(int j=;j<=i;++j)
{
change(d[i+][j],d[i][j]+num[i+][j]);
change(d[i+][j+],d[i][j]+num[i+][j+]);
} int maxSum=;
for(int j=;j<=R;++j) change(maxSum,d[R][j]);
out<<maxSum<<endl; in.close();
out.close();
return ;
}

USACO Section1.5 Number Triangles 解题报告的更多相关文章

  1. USACO Section1.5 Prime Palindromes 解题报告

    pprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  2. USACO Section1.5 Superprime Rib 解题报告

    sprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  3. USACO Section1.4 Arithmetic Progressions 解题报告

    ariprog解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...

  4. USACO Section1.3 Combination Lock 解题报告

    combo解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  5. USACO Section1.3 Prime Cryptarithm 解题报告

    crypt1解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  6. USACO Section1.3 Barn Repair 解题报告

    barn1解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  7. USACO Section1.3 Mixing Milk 解题报告

    milk解题报告 —— icedream61 博客园(转载请注明出处)----------------------------------------------------------------- ...

  8. USACO Section1.2 Palindromic Squares 解题报告

    palsquare解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...

  9. USACO Section1.2 Dual Palindromes 解题报告

    dualpal解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...

随机推荐

  1. BZOJ 4679/Hdu5331 Simple Problem LCT or 树链剖分

    4679: Hdu5331 Simple Problem 题意: 考场上,看到这道题就让我想起BZOJ4712洪水.然后思路就被带着飞起了,完全没去考虑一条链的情况,于是GG. 解法:先考虑一条链的做 ...

  2. mybatis怎样自动生成java类,配置文件?

    其实没有什么东西是可以自动生成的,只不过是别人已经写好了,你调用罢了. 所以想要mybatis自动生成java类,配置文件等,就必须要一些配置和一些jar包.当然这些配置也很简单. 为了有个初步的认识 ...

  3. http协议,tcp协议,ip协议,dns服务之前的关系和区别

    长期以来都有一个问题,大家都在说http协议,tcp协议,ip协议,他们之间到底什么区别,有什么用,没人告诉我,最近看了这本<图解http>明白了一些,以下图片摘自这本书 一.理解一个传输 ...

  4. DOM节点(二):操作节点

    appendChild() 用于向childNodes列表的末尾添加一个节点. var returnedNode = someNode.appendChild(newNode); 如果传入的节点已经是 ...

  5. Velocity中加载vm文件的三种方式

    Velocity中加载vm文件的三种方式: a.  加载classpath目录下的vm文件 /** * 初始化Velocity引擎 * --VelocityEngine是单例模式,线程安全 * @th ...

  6. RHEL7.X安装12.2RAC时root.sh错误CLSRSC-400的解决方案

    问题现象: [root@ora12c ghome]# /opt/oracle/ghome/root.sh Performing root user operation. The following e ...

  7. UISearchController(使用)

    效果图1 效果图2 其实一般是在第一种情况使用的UISearchController,但是第二种情况这种又懒得去用uisearchbar+uitableview等等去处理, 其实主要是对数据源的合理使 ...

  8. TCL之表达式

  9. 【PHP】Maximum execution time of 30 seconds exceeded解决办法

    Maximum execution time of 30 seconds exceeded,今天把这个错误的解决方案总结一下: 简单总结一下解决办法: 报错一:内存超限,具体报错语句忘了,简单说一下解 ...

  10. python——内建模块instance的学习

    python中内建函数isinstance的用法 语法:isinstance(object,type) 作用:来判断一个对象是否是一个已知的类型. 其第一个参数(object)为对象,第二个参数(ty ...