P1216-DP【橙】
在这道题中,我第一次用了memset,确实方便,不过需要注意的是只有全部赋值-1和0的时候才能使用它,否则他能干出吓死人的事。以及memset在cstring头文件里,在本地就算不include也能照常编译,但评测机里可能不行,所以一定要写上cstring
同时,我半获得半自我总结了一个暴论,这个暴论直接让我理解DP到底是个啥了。
暴论如下:
暴论,除了存参数返回值对应关系的的DP数组外不准更改外部变量(不准更改意味着可以把变量当常量引用)的dfs就是动态规划!反之亦然!换句话说,记忆化搜索是一种特殊的dfs,不只是加了记忆化,还要求改dfs不能修改在dfs外部定义的全局变量,因为只有这样的dfs才能记忆化。而这种记忆化搜索其实就是DP,完全等价!!!至于递推形式的DP才是引申出来的DP新写法,而记忆化搜索形式不用考虑刷DP数组的顺序,而且还能少求一些不需要求的东西,甚至效率可能比递推形式更好。想学习DP完全可以从学习新形式的dfs来入手逐渐掌握DP是想干啥。
Code
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <map>
#include <cstring>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
int N;
int DP[1005][1005],a[1005][1005];
//暴论,除了存参数返回值对应关系的的DP数组外不准更改外部变量(不准更改意味着可以把变量当常量引用)的dfs就是动态规划!倘若真的如此哪便能彻底明白动态规划了!!!
int dfs(int x,int y)
{
if(DP[x][y]!=-1)return DP[x][y];
if(x==N)return DP[x][y]=a[x][y];
else
{
return DP[x][y]=a[x][y]+max(dfs(x+1,y),dfs(x+1,y+1));
}
}
int main()
{
cin>>N;
memset(DP,-1,sizeof(DP));
for(int i=1;i<=N;i++)
{
for(int j=1;j<=i;j++)
{
cin>>a[i][j];
}
}
cout<<dfs(1,1)<<endl;
return 0;
}
P1216-DP【橙】的更多相关文章
- 洛谷P1216 数字三角形【dp】
题目:https://www.luogu.org/problemnew/show/P1216 题意: 给定一个三角形.从顶走到底,问路径上的数字之和最大是多少. 走的时候可以往左下(实际上纵坐标不变) ...
- 洛谷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 ...
- 【专章】dp入门
动态规划(简称dp),可以说是各种程序设计中遇到的第一个坎吧,这篇博文是我对dp的一点点理解,希望可以帮助更多人dp入门. ***实践是检验真理的唯一标准,看再多文章不如自己动手做几道!!!*** 先 ...
- 清橙A1212:剪枝
题面 清橙 Sol 一种新的树上\(DP\)姿势 从左往右按链\(DP\) 做法: 维护两个栈\(S1\),\(S2\) \(S1\)存当前的链 \(S2\)存分叉点以下要改的链 \(Dfs\),弄一 ...
- DP题目推荐合集(洛谷/UVa)
今天下午要参加海淀区的比赛了...这几天临时抱佛脚刷了几道DP,正所谓临阵磨枪,不快也光...下面我 就把最近刷到的,自己觉得不错的动态规划题列出来: 1.P2690 接苹果 :(基础二维DP) 2. ...
- DP及其优化
常见DP模型及其构造 序列DP ARC074 RGB Sequence 题意 给你一个长度为 \(n\) 的序列和 \(m\) 组约束条件,每组条件形如 \(l_i,r_i,x_i\),表示序列上的 ...
- P1216 数字金字塔
P1216 数字金字塔 我们可以用 f [ i ] [ j ] 表示从(1,1)出发,到达(i,j)的最大权值和. (i , j)可以由(i - 1 , j)或者(i - 1 , j - 1)转化来 ...
- 算法之DP
一般DP 都是有模板的,先初始化,然后找到不同状态下数值的关系,使得某个状态可用另一个状态由一个固定的方式转移而来,列出状态转移方程,这就是DP: 例题 P1216 [USACO1.5]数字三角形 N ...
- 【学习笔记】dp入门
知识点 动态规划(简称dp),可以说是各种程序设计中遇到的第一个坎吧,这篇博文是我对dp的一点点理解,希望可以帮助更多人dp入门. 先看看这段话 动态规划(dynamic programming) ...
- P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles
P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles 这个题吧,之前学DP的时候就做过一次了,其实还是挺简单的,如果一步一步按照找状态定义,找边界条件,找转移 ...
随机推荐
- Vue2.0 学习 第二组 语法模板
本笔记主要参考菜鸟教程和官方文档编写. 1.文本绑定 一般在dom中用{{}}标时,并且在vue构造体内的data中定义文本内容 <div id="app"> & ...
- 如何将 performance_schema 中的 TIMER 字段转换为日期时间
问题 最近有好几个朋友问,如何将 performance_schema.events_statements_xxx 中的 TIMER 字段(主要是TIMER_START和TIMER_END)转换为日期 ...
- LeetCode1786:从第一个节点出发到最后一个节点的受限路径数(dijkstra + 记忆化搜索)
解题思路:比赛的是没读懂题意,这题求的是起点1到n路径序列数,但是路径序列上的相邻两个点 i, i+1 之间应该满足 i.i+1 到终点的最短路low[i] > low[i+1]. 因此需要先以 ...
- ClickHouse(19)ClickHouse集成Hive表引擎详细解析
目录 Hive集成表引擎 创建表 使用示例 如何使用HDFS文件系统的本地缓存 查询 ORC 输入格式的Hive 表 在 Hive 中建表 在 ClickHouse 中建表 查询 Parquest 输 ...
- MyBatisPlus配置类-配置分页插件,注册为bean对象
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.mybatis.spring.a ...
- Python——第五章:os模块、sys模块
os 模块 os 模块提供了很多允许你的程序与操作系统直接交互的功能 import os 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...
- 解压.tar.gz文件的命令
要解压以 .tar.gz 或 .tgz 扩展名结尾的文件,可以使用 tar 命令.通常,这些文件是使用 tar 和 gzip 压缩的.以下是解压 .tar.gz 文件的命令: tar -xzvf 文件 ...
- Python——第一章:if语法规则
if语句的语法规则: ======第一种====== if 条件: 代码 如果条件成立就执行代码 如果不成立, 就不执行 案例1: mo ...
- Python 潮流周刊第 34 期(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- [Python急救站]学生管理系统链接数据库
相信很多人在初学Python的时候,经常最后作业就是完成一个学生管理系统,但是我们来做一个完美的学生管理系统,并且将数据储存到数据库里. 我们先看看我们的数据库怎么设置. 首先呢,我选择用的是SQL ...