Algorithm design
文章平均质量分 73
Design of some classical contest algorithms
NP_hard
ShenZhen University-CSSE-CS
️ Github: Np_hard (David-deng-yeah)
Interest: Database-Kernel & Distributed-System & Machine-Learning
展开
-
字符串DP问题
文章目录前言例题1例题2前言对于一些字符串问题,比如求一串字符中最长的回文串,或者是一些回文串的变种问题,我们一般可以使用一个二维的DP数组来保存计算的结果,从而减少计算量,下面我用两个例题来解释例题1例题的链接例题2516. Longest Palindromic Subsequence给定一个字符串s,找出s中最长的回文子序列的长度。子序列是一个序列,可以通过删除部分或不删除元素而从另一个序列派生,而不改变其余元素的顺序。我们可以将一个字符串的任意字串用一个二维DP数组来表示,比如s[原创 2022-03-15 10:57:13 · 312 阅读 · 0 评论 -
二维DP问题
文章目录前言小技巧例题 1方法一 求组合数方法二 动态规划例题 2方法一 dp例题 3方法一 dp前言我们经常会碰到二维DP问题,比如给你一张地图(一般是二维矩阵),让你计算出从地图的左上端走到右下端的路径有多少条 / 最短的路径之和,这种问题一般会被限制运动的空间(至少我现在所碰到的题目),一般是只能向下和向右移动。我对dp问题理解不深,对于二维dp问题我的理解就是找出最优子结构(递推方程)之后,用一个二维数组来保存历史状态就能解决问题了小技巧一般这种问题很容易被矩阵上边和左边这两条bounda原创 2022-03-13 12:38:49 · 2640 阅读 · 0 评论 -
求组合数算法(大数板子)
代码long C(int m, int n) { if(m < n) swap(m, n); long res = 1; for(int i = m+1, j=1; i <= m+n; i++, j++){ // Instead of taking factorial, keep on multiply & divide res *= i; res /= j; } return res;}例题链原创 2022-03-11 17:12:17 · 230 阅读 · 0 评论 -
数组前缀和解决二维DP问题
文章目录用法例题1用法例题1题目链接原创 2022-03-09 15:11:58 · 185 阅读 · 0 评论 -
树形DP问题
文章目录前言例题 1DFS剪枝(树形DP)前言这段话引用自这位佬在树形动态规划当中,我们一般先算子树再进行合并,在实现上与树的后序遍历相似,都是先遍历子树,遍历完之后将子树的值传给父亲。简单来说我们动态规划的过程大概就是先递归访问所有子树,再在根上合并那可能就有人会问了,这不就是树的后序遍历吗?递归计算完所有子树后将值返回给父节点,跟DP有啥子关系?其实是因为在很多此类问题中,很多时候会产生重复的计算(递归的通病),所以我们需要将计算结果记忆化,以减少计算量我的个人理解是 树形DP = DFS+原创 2022-03-03 11:25:06 · 341 阅读 · 0 评论 -
有限状态机解DP问题
文章目录前言例题1解释例题2解释前言在写某些动态规划问题的时候,把问题描述为有限状态机的形式可以帮助我们解决这种DP问题下面将用两道例题来解释例题1You are given an integer array prices where prices[i] is the price of a given stock on the ith day.On each day, you may decide to buy and/or sell the stock. You can only hold a原创 2022-02-27 13:08:14 · 496 阅读 · 0 评论