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. Linux修改文件permission可执行属性

    列出文件属性 ls -al 修改文件属性为可读.可写 sudo chmod -c 777 <your file name>

  2. session的MaxInactiveInterval=0在tomcat6和tomcat8不同表现

    在tomcat6中调用 request.getSession().setMaxInactiveInterval(0); 这个session会立即过期. 而在tomcat8中,同样的调用,会导致这个se ...

  3. 12/13 exercise

    gcc -[cog] gcc   pro1.o   pro2.o      //create a executable file x.out if unnamed

  4. 基数排序C#界面版

    第一步:生成数据  第二步:读取数据 第三步:创建队列 第四步:入队分配 第五步:出队收集重复第四步与第五步,直到出队入队各四次,完成基数排序:如下:4次入队结束后如下:最后一次出队:基数排序完成.. ...

  5. 页面文本超出后CSS实现隐藏的方法

    text-overflow: ellipsis !important; white-space: nowrap !important; overflow: hidden !important; dis ...

  6. POJ-2029 Get Many Persimmon Trees---二维树状数组+枚举

    题目链接: https://vjudge.net/problem/POJ-2029 题目大意: 有N棵树在一个n*m的田里,给出每颗树的坐标 用一个s*t的矩形去围,最多能围几棵树 思路: 用二维树状 ...

  7. 【转】WebSocket 是什么原理?为什么可以实现持久连接?

    WebSocket是HTML5出的东西 也就是说HTTP协议没有变化 但HTTP是不支持持久连接的(长连接,循环连接的不算)或者说WebSocket干脆就不是基于HTTP来执行的.但是...说不通啊. ...

  8. Jmeter文件目录,功能简介

    1.Jmeter文件目录:1)bin文件: Jmeter启动:bin/jmeter.bat Jmeter日志文件:jmeter.log Linux的启动文件:Jmeter.sh Jmeter系统配置文 ...

  9. VIM中的保存和退出

    在插入模式下按ESE键.然后按住shift别松.在按;键.进入末行模式下. 然后按wq键.就可以保存退出了.

  10. 相机标定/校正(Camera Calibration)

    以前DIP課程有做過Camera calibration,這次因為用Gopro做Visual SLAM,所以又要撿一下校正的過程.主要還是張正友的方法. OpenCV: 用OpenCV自帶的Sampl ...