摘要:
题意:由数字1到n组成的所有排列中,问满足题目所给的n-1个字符的排列有多少个,如果第i字符是‘I’表示排列中的第i-1个数是小于第i个数的。 如果是‘D’,则反之。 析:dp[i][j] 表示前 i 个数以 j 结尾有多少个,然后如果是 I ,那么就好,就是 i-1 中的前j-1项和,如果是 D, 阅读全文
摘要:
题意:给定一个 n * m的矩阵,然后你从 (1,1)到 (n,m),每次你有三种可能,不动,向右,向下,每次要消耗2个魔法,并且给定每个概率, 问你走出去的期望。 析:dp[i][j] 表示从 (i,j)到终点的概率。然后一路逆推回去就好。 代码如下: 阅读全文
摘要:
题意:给定 F(x)的不表达,给定一个 n 问 1- n中有多少数是小于等于 F(m)的。 析:dp[i][j] 表示前 i 位不大于 j 个的数量。 代码如下: 阅读全文
摘要:
题意:给定一棵树,然后让你找出每个结点离所有结点的最远距离。 析:也就说我们要知道离每个结点的最远距离,对于每个结点,我们知道离它最远的,要么是从父结点过来,要么是从子树中得到,dp[i][0] 表示从 i 子树中得到的 最远距离,dp[i][1] 表示 i 从子树得到的次远距离,dp[i][2] 阅读全文
摘要:
题意:n-1个宿舍,1个供电站,n个位置每两个位置都有边相连,其中有一条边不能连,求n个位置连通的最小花费的最大值。 析:因为要连通,还要权值最小,所以就是MST了,然后就是改变一条边,然后去找出改变哪条能使得总花费最大,dp[i][j] 表示那条边左边的 i 和右边的 j, 最短距离,然后枚举MS 阅读全文
摘要:
题意:给一图,n个点,m条边,每条边有个花费,给出q条可疑的边,每条边有新的花费,每条可疑的边出现的概率相同,求不能经过原来可疑边 (可以经过可疑边新的花费构建的边),注意每次只出现一条可疑的边,n个点相互连通的最小花费的期望。 析:要想连通先让他们连通起来,先构造出一个MST,然后再暴力,如果这个 阅读全文
摘要:
题意:给定一棵树,断开一条边或者接上一条边都要花费 1,问你花费最少把这棵树就成一个环。 析:树形DP,想一想,要想把一棵树变成一个环,那么就要把一些枝枝叶叶都换掉,对于一个分叉是大于等于2的我们一定要把它从父结点上剪下来是最优的, 因为如果这样剪下来再粘上花费是2(先不管另一端),如果分别剪下来再 阅读全文
摘要:
题意:给定两行字符串,求最长公共子序列。 析:dp[i][j] 表示第一串以 i 个结尾和第二个串以 j 个结尾,最长公共子序列,剩下的就简单了。 代码如下: 阅读全文
摘要:
题意:中文题。 析:dp[i][j] 已经杀了 i 个怪兽,已经用了 j 体积,所能获得的最大经验值,这个和一维的差不多,只是加一维而已。 代码如下: 阅读全文
摘要:
题意:给定一个体积,和一些物品的价值和体积,问你最大的价值。 析:最基础的01背包,dp[i] 表示体积 i 时最大价值。 代码如下: 阅读全文