个人对dp的理解: 记忆化,先求出小问题的最优解,然后状态转移逐步求出原问题的解。递推是神,des。 使用dp前提: 能拆分为子问题并能求出状态转移方程,原问题是最优解的同时子问题也都是最优解。 无后效性,也就是一个状态的值只与当前有关,此刻求出多少就是多少。且不会因为达到最优地方式的不同而影响未来 ...
分类:
其他好文 时间:
2021-02-10 13:18:35
阅读次数:
0
ECNU 3531 定西 链接 https://acm.ecnu.edu.cn/problem/3531 题目 单点时限: 1.0 sec 内存限制: 256 MB 这么多年你一个人一直在走 方向和天气的节奏会让你忧愁 你说你遇见了一大堆奇怪的人 他们看上去好像都比你开心 ——李志《定西》 这首歌的 ...
分类:
其他好文 时间:
2021-01-22 12:14:42
阅读次数:
0
☆☆☆☆思路:树形DP问题。 class Solution { /** * 1.状态的定义:dp[node][j] 表示 node是否偷取所能获得的最大价值。 * j = 0, 表示node节点不偷 ; j = 1, 表示node结点偷取 * 2.状态转移方程: * 如果当前节点偷,那么左右子节点均 ...
分类:
其他好文 时间:
2021-01-06 11:44:45
阅读次数:
0
动规问题,如果直接使用滚动数组不开空间会效率更高,所有效率可以提升百分之40左右; 状态转移方程: dp[i]=min(dp[i-1],dp[i-2])+cost[i]; class Solution { public: int minCostClimbingStairs(vector<int>& ...
分类:
其他好文 时间:
2020-12-25 12:32:04
阅读次数:
0
class Solution { // 思路:【动态规划】 // 状态转移方程是 p[i,j] = p[i+1,j-1] && p[i] = p[j] // p[i,j] 表示第i个 和 第j 个是相同的 // 整体分两层循环【第一层按回文长度从零到n , 第二层就是字符从第一个开始往后循环】 pu ...
分类:
其他好文 时间:
2020-12-25 12:13:31
阅读次数:
0
微信公众号:Jerry的算法和NLP|背包问题主要分为以下几类0/1背包问题完全背包问题多重背包问题多重背包问题的优化混合背包问题二维背包问题分组背包问题有依赖的背包问题背景首先说下背包问题的背景背包问题一般都是主要会提供这个背包的容量V然后给出一系列的物品物品主要以下几个属性价值V体积W物品个数S然后求在这么多物品中求出在背包容量下能够放置物品的最大价值首先先定义一个DP数组DP[i][j]i—
分类:
其他好文 时间:
2020-12-19 13:29:18
阅读次数:
2
题目来源:https://leetcode-cn.com/problems/longest-palindromic-substring/submissions 思路:动态规划(参看官方解析) 关键点: 1:对于字符串长度大于2,状态转移方程:P(i,j)=P(i+1,j?1) && (Si?==Sj ...
分类:
其他好文 时间:
2020-12-18 12:45:33
阅读次数:
3
01背包问题。 与模板不同,这道题要求的是最小剩余空间,也就是求背包里最多能放多少东西。 所以状态转移方程变为 fi= fi - w[i] + wi 。 其中 fi 表示当背包容量为 i 时可放的最大重量。 注意要倒着循环。 #include<bits/stdc++.h> using namespa ...
分类:
其他好文 时间:
2020-12-03 11:59:56
阅读次数:
3
思路 比较明显的动态规划问题。状态转移方程为:f(x, y) = grid(x,y) + max {f(x-1,y), f(x, y-1)} 。 优化:这里不使用额外的数组f,而就地更改grid数组,可以将空间复杂度降为O(1)。 1 class Solution { 2 public: 3 int ...
分类:
其他好文 时间:
2020-11-13 13:08:20
阅读次数:
7
根据题目中规定路径都是单向的,且从编号小的地窖通向编号大的地窖,可以确定本题可以使用动态规划解决。首先思考求解时最后一步会做什么——选择最后一个地窖,挖走其中的地雷。依据此来推出状态转移方程设f[i]表示以i地窖为结束点能挖到的最大地雷数。那么可以写出f[i]=max(f[j]+a[i])条件是j小 ...
分类:
编程语言 时间:
2020-11-02 10:38:23
阅读次数:
34