问题描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 解法一(动态规划): 用dp[i]表示第i位结尾 ...
分类:
其他好文 时间:
2020-11-08 17:06:45
阅读次数:
22
若有恒,何必三更眠五更起; 最无益,莫过一日曝十日寒。 7.25 分割数组的最大值 区间dp 最大值可以方便的转移,所以可以直接应用区间dp 为什么这里的状态转移不一样? 对比最经典的区间dp 题目 石子合并 \[ j = i+l-1\\ dp[i][j] = \max_{k\in [i,j)}(d ...
分类:
其他好文 时间:
2020-11-07 16:44:26
阅读次数:
18
给定一棵树,树上每个结点刚开始有一个人,现在每个人需要走到一个不同于原来的结点,并且必须保证每个结点上仍然有且仅有一个人,在树上走一条边的代价为 $1$,求最小代价。 ...
分类:
其他好文 时间:
2020-11-06 02:09:44
阅读次数:
23
5556. 可以到达的最远建筑 刚开始写得时候感觉像贪心,但没分析好不敢写,自己写了个记忆化搜索,后来看讲解把贪心法给补上 记忆化搜索 const int MAXN = 1e5+50; class Solution { public: int dp[MAXN]; int dfs(int now, v ...
分类:
其他好文 时间:
2020-11-01 22:29:28
阅读次数:
84
状态压缩DP 初探 +++ 1.蒙德里安的梦想 求把NM的棋盘分割成若干个12的的长方形,有多少种方案。 例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。 如下图所示: 输入格式 输入包含多组测试用例。 每组测试用例占一行,包含两个整数N和M。 当输入用例N=0,M=0时,表 ...
分类:
其他好文 时间:
2020-11-01 22:10:36
阅读次数:
21
单调递增最长子序列分析: 1.1: i == 0时:dp[0] = 1; 其余情况: dp[i] = max( dp[i] , dp[ j ] + 1); 0 <= j < i; 1.2 填表的维度: 一维 填表的范围: dp[0] 到 dp[n-1] 填表顺序:从左向右 1.3 因为要以每一个数位 ...
分类:
编程语言 时间:
2020-11-01 22:01:32
阅读次数:
24
1.[HEOI2013]SAO 题意实际上是让你求拓扑序数。 引用 \(\text{shaowice1984}\) 学长的一句话:“这题要是想拓扑图就凉了。” 我们可以先忽略边的限制直接建树,然后跑树形dp。 子树内的点对顺序到lca处统计贡献。 我们设 \(f[i][j]\) 表示 \(i\) 这 ...
分类:
其他好文 时间:
2020-11-01 20:58:18
阅读次数:
14
之前在luogu上写的 仍然作为学习记录使用 这道题涉及的是背包问题,DP的一种模型。 由于我之前没有发过背包相关的题解,所以先简单讲一下。 01背包问题 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 这时我们开一个数组叫d[i ...
分类:
其他好文 时间:
2020-11-01 10:22:31
阅读次数:
11
https://www.acwing.com/problem/content/93/ \(dp[S][i]\) 表示经过点的状态为 \(S\) , 当前在 \(i\) 点时的最短路 时间复杂度$O(n2*2n)$ #include<cstdio> #include<cstring> #include ...
状态转移方程的定义为:dp( K,i ) 表示经历 K 站乘坐到 flight[i] 航班终点的最低票价。 因为 flight 中的元素存在前后置关系,所以乘坐某航班的上一航班的集合是可以确定的。 dp( K,i ) = Math.min( dp( K-1,j ) ),其中 j 为可以作为上一趟航班 ...
分类:
其他好文 时间:
2020-11-01 10:08:43
阅读次数:
15