P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles
P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles
这个题吧,之前学DP的时候就做过一次了,其实还是挺简单的,如果一步一步按照找状态定义,找边界条件,找转移方程的话,不失为一道好题,我们就就这题复习一下DP,然后顺便讲点别的
因为我们是从顶点开始走,往左下走或者右下走,所以我们的状态就是F[i][j]我们停在第i行第j列所能达到的最大权值
对于每一个点,我们看他是从哪一个点过来的,可以是右上面也可以是左上面
转移方程:f[i][j]=max(f[i-1][j-1]+f[i-1][j])+a[i][j]
QWQ终于是有一个能码出来的代码了
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int r,a[][],qaq[][],MAX;
int main() {
cin>>r;
for(int i=; i<=r; ++i)//第i行第j个
for(int j=; j<=i; ++j)
cin>>a[i][j];
for(int i=; i<=r; ++i)
for(int j=; j<=i; ++j) {
qaq[i][j]=max(qaq[i-][j-],qaq[i-][j])+a[i][j];
}
for(int i=; i<=r; ++i)
MAX=max(MAX,qaq[r][i]);
cout<<MAX;
return ;
}
改造题目(EX NumberTriangles)
我们要使得找出来的权值和%m之后的值是最大的,
起初我的想法是用一个结构体来存实际权值和取模后的权值,但是是不行的,因为不再满足最优子结构原则了。(就是说实际权值和取模权值之间的大小没有必然联系,所以我们无法用状态转移方程来求最大最小)
我们考虑加一个维度,开一个bool数组f
f[i][j][k]代表走到第i行第j列是路径权值和%m= k 可不可能,那我们怎么转移呢
还是考虑一个点只有可能从它的左上方和右上方求值过来,那么我们就能得出状态转移方程了
for (int i = ; i <= n; ++i)
{
for (int j = ; j <= m; ++j)
{
if (f[n][i][j])
ans = max(ans, j);
}
}
就这样,完事(大雾)
P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles的更多相关文章
- luogu P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles (递推)
链接:https://www.luogu.org/problemnew/show/P1216 题面: 题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的 ...
- 洛谷——P1216 [USACO1.5]数字三角形 Number Triangles
P1216 [USACO1.5]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左 ...
- P1216 [USACO1.5]数字三角形 Number Triangles
题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...
- AC日记——[USACO1.5]数字三角形 Number Triangles 洛谷 P1216
题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...
- 洛谷 P1216 [USACO1.5]数字三角形 Number Triangles(水题日常)
题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...
- [USACO1.5]数字三角形 Number Triangles
题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...
- 【洛谷 P1216】【IOI1994】【USACO1.5】数字三角形 Number Triangles
(如此多的标签qaq) 数字三角形 Number Triangles[传送门] 本来打算当DP练的,没想到写着写着成递推了(汗) 好的没有时间了,我们附个ac代码(改天不写): #include< ...
- 洛谷P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles (DP入门)
考虑逆推就行了. 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int a[1010][1010]; 5 int ...
- 洛谷P1216 数字三角形【dp】
题目:https://www.luogu.org/problemnew/show/P1216 题意: 给定一个三角形.从顶走到底,问路径上的数字之和最大是多少. 走的时候可以往左下(实际上纵坐标不变) ...
随机推荐
- 父类virtual和overload,子类reintroduce; overload;
如果函数在父类中既是虚拟方法也是重载方法,那么:TBase=class(TObject)function DisappearRoutinel: String; overload; virtual;fu ...
- java.sql.SQLException: The user specified as a definer ('root'@'%') does not exist
权限问题,授权给 root 所有sql 权限 在Navicat for MySQL中按F6进入命令列界面 mysql> grant all privileges on *.* to root@& ...
- More on Class Loading and Initialization
上一篇博客中对于类的加载和初始化进行了详细的说明,但上一篇博客代码中的main()所在的类为导出类, 对其中一些问题的理解可能会引起误导和不明确,所以补充这篇博客进一步说明.以下面的代码为例进行说明: ...
- render httprequest
render def my_view(request):# View code here... t = loader.get_template('myapp/index.html') c = Requ ...
- LeetCode:对角线遍历【498】
LeetCode:对角线遍历[498] 题目描述 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ ...
- Boostrap常用组件英文名
dropdownlisttabsearchVertical TabSidebar with tabssidebarExpandable Panel ListFiltered Attendees Lis ...
- $《第一行代码:Android》读书笔记——第6章 数据持久化
主要讲述了Android数据持久化的三种方式:文件存储.SharedPreference存储.SQLite数据库存储. (一)文件存储 其实Android中文件存储方式和Java的文件操作类似,就是用 ...
- Sourse Insight使用过程中的常使用功能简介
1.查找定义: 在编辑区内,选中任意一个变量.函数.宏等,点击右键->Jump Definition,或者直接Ctrl+左击 2.编辑区切换
- 玩转python主题模型程序库gensim
gensim是python下一个极易上手的主题模型程序库(topic model),网址在:http://radimrehurek.com/gensim/index.html 安装过程较为繁琐,参考h ...
- BCM 交换机开发
转:http://blog.chinaunix.net/uid-23782786-id-3839602.html 前言: 最近搞这玩样,真是折腾,网上的资料都是片段,而且很少.折腾了4. ...