题目大意:给定一个数字三角形,求从 (1,1) 到第 N 行的路径经过的权值之和加上该路径上任意一个点的权值之和的最大值。

题解:任意加一条路径上的某个值,可以看成是多了一次选择的权利,即:在每次经过一个点时,若没使用过权利,可以选择使用或者不使用,若已经使用过,则不能再使用。因此有状态 \(dp[i][j][0/1]\)表示经过前 i 行,位置在 (i,j) 时,是否用过这次权利。

代码如下

#include <bits/stdc++.h>
using namespace std;
const int maxn=1010; inline int read(){
int x=0,f=1;char ch;
do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch));
do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch));
return f*x;
} int n,ans,mp[maxn][maxn],dp[maxn][maxn][2]; void read_and_parse(){
n=read();
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
mp[i][j]=read();
dp[1][1][0]=mp[1][1],dp[1][1][1]=mp[1][1]<<1;
} void solve(){
for(int i=1;i<n;i++)
for(int j=1;j<=i;j++){
dp[i+1][j][0]=max(dp[i+1][j][0],dp[i][j][0]+mp[i+1][j]);
dp[i+1][j][1]=max(dp[i+1][j][1],max(dp[i][j][1]+mp[i+1][j],dp[i][j][0]+(mp[i+1][j]<<1)));
dp[i+1][j+1][0]=max(dp[i+1][j+1][0],dp[i][j][0]+mp[i+1][j+1]);
dp[i+1][j+1][1]=max(dp[1+1][j+1][1],max(dp[i][j][1]+mp[i+1][j+1],dp[i][j][0]+(mp[i+1][j+1]<<1)));
}
for(int i=1;i<=n;i++)ans=max(ans,dp[n][i][1]);
printf("%d\n",ans);
} int main(){
read_and_parse();
solve();
return 0;
}

【codevs4829】数字三角形++的更多相关文章

  1. G:数字三角形

    总时间限制: 1000ms 内存限制: 65536kB描述73   88   1   02   7   4   44   5   2   6   5 (图1) 图1给出了一个数字三角形.从三角形的顶部 ...

  2. 4829 [DP]数字三角形升级版

    4829 [DP]数字三角形升级版  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 从数字三角形的顶部(如图, ...

  3. 【递归】数字三角形 简单dp

    [递归]数字三角形 题目描述 对于大多数人来说,“我们是这么的正常,因此也就这么的平庸.”而天才总是与众不同的,所以当邪狼问修罗王:“老大,你蹲在那儿一动不动看了有半个小时了,蚂蚁有那么好看吗?” 修 ...

  4. hihocoder 1037 数字三角形

    #1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸 ...

  5. lintcode:数字三角形

    题目: 数字三角形 给定一个数字三角形,找到从顶部到底部的最小路径和.每一步可以移动到下面一行的相邻数字上. 样例 比如,给出下列数字三角形: [      [2],     [3,4],    [6 ...

  6. 1989-C. 数字三角形

    描述 如图所示,是一个数字搭成的三角形. 若起始位置在三角形的顶端,结束位置在三角形底边,每一步只能向下方或向右下角移动一格.请编程计算一条路径,使得路径上经过的数字和最大.(图中路径7→3→8→7→ ...

  7. 洛谷P1118 数字三角形游戏

    洛谷1118 数字三角形游戏 题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直 ...

  8. HDU 1176 免费馅饼(数字三角形)

    免费馅饼 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉 ...

  9. [CODEVS1220]数字三角形

    题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值最大. 输入描述 Input Description ...

随机推荐

  1. vsftpd虚拟账户配置

    1. 概述 FTP是文件传输协议,在内外网的文件传输中使用广泛. 本篇博客主要介绍FTP服务器的部署和测试. 2. 软件环境部署 查看系统是否安装FTP软件(vsftpd),执行命令:rpm -qa ...

  2. Centos7系统下修改主机名操作笔记

    习惯了在Centos6系统下修改主机名的操作,但是Centos7下修改主机名的操作却大不相同!操作笔记如下: 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient) ...

  3. 个人作业Week1

    一.<构建之法>提问 1.需求是什么?需求的规范需要明确吗? 2.一个人开发效率非常高,多人开发,个人效率随团队人数上升而直线下降,我们一般需要将大项目拆为小项目,使协作耦合产生的效率负影 ...

  4. Jira 自定义工作流

    一.添加修改工作流 打开 设置--问题--工作流 复制一个工作流,然后进去编辑页面 添加状态 增加转换动作 切换到文本,设置跳转过程中的事件 针对Stop Progress事件,修改跳转界面(界面需先 ...

  5. 远程连接db2数据库

    在db2数据库中,需要理解catalog(编目)这个概念,理解前先说下db2数据库的体系结构:由系统(节点)也就是主机,下面是实例,实例下面是数据库,然后是表空间,再是数据库对象.现在假设你有一个数据 ...

  6. Ionic package Error: Registry returned 404 for GET on

    Ionic package Error: Registry returned 404 for GET on https://registry.npmjs.org/org.apache.cordova. ...

  7. charts & data visualization

    charts & data visualization https://www.sitepoint.com/15-best-javascript-charting-libraries/ Can ...

  8. delphi有关获取其他程序的窗口及对窗口内控件的操作

    1.获取当前所有窗口 procedure TForm1.Button1Click(Sender: TObject);var szText: array[0..254] of char; hCurren ...

  9. 我的IntelliJ IDEA快捷键

    Ctrl + Alt + S    打开设置菜单 Ctrl + N    快速打开类,写类的全路径可以查看jar包中的类 Ctrl + Shift + N    快速打开文件 Ctrl + X     ...

  10. BZOJ2631tree——LCT

    题目描述 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一:+ u v c:将u到v的路径上的点的权值都加上自然数c:- u1 v1 u2 v2:将树中原有的边( ...