随笔分类 - 紫书 第九章 动态规划初步
摘要:这道题有个初始值设成1e9, 然后这个值是要加很多次的,然后就会溢出变成负数,然后就一直WA, 找这个bug找了一个小时……以后不能随便这样设那么大,要考虑会不会加很多次然后溢出。讲一下思路。首先对于当前节点u,可以分三种情况。一种是当前节点是服务器,一种是节点的父亲...
阅读全文
摘要:这里的状态定义的非常的巧妙,d(i, 1)表示以i为根节点且选i的子树的最大独立子集d(i, 0)表示以i为根节点且不选i的子树的最大独立子集d(i, 1) = sum{ d(v, 0) | v是i的儿子}d(i, 0) = sum{ max(d(v, 0), d(v...
阅读全文
摘要:这道题还是比较简单的,对于当前节点,算出每个儿子需要的人数然后再算出当前节点需要多少个人数,然后排个序加上去就好了。#include#include #include#define REP(i, a, b) for(int i = (a); i son[MAXN];...
阅读全文
摘要:设置f(i, j)为点i, i + 1 ……j所组成的多边形。那么可以枚举中间点k, 得f(i, j) = min{s(i, j, k), f(i, k), f(k, j) | i #include#include#include#define REP(i, a, b...
阅读全文
摘要:当前区间f(i, j)分两种情况,一种是s[i]于s[j]符合要求,那么可以转移到f[i + 1][j - 1] 这样答案只会更小或者相等第二种是直接分成两个部分, 即f[i][j] = f[i][k] + f[k + 1][j],这个时候要取min同时要注意第一种情...
阅读全文
摘要:区间dp,可以以一个区间为状态,f[i][j]是第i个切点到第j个切点的木棍的最小费用那么对于当前这一个区间,枚举切点k,可以得出f[i][j] = min{dp(i, k) + dp(k, j) | i #include#include#define REP(i, ...
阅读全文
摘要:这题看题解看了很久,学到了挺多(自己还是太弱,唉!)(1)这道题的思路非常的巧妙。我一开始看到就觉得不好来记录开始位置以及结束位置。但是题解换了一个思路,记录每一次开始了但还没有结束的字符有多少个这样每次进来一个新的字符,就可以更新答案。(2)这一类两个字符串取公共部...
阅读全文
摘要:这道题判断回文串的方法非常的秀!这里用到了记忆化搜索,因为会有很多重复同时用kase来区分每一组数据然后还有用递归来判断回文,很简洁然后这种线性结构的动态规划的题,就是把当前的这个数组分成两块来枚举,一块是之前已经得出的最优解,一块是自己现在按照题目要求来算出的值,这...
阅读全文
摘要:这道题的下标从1开始比较方便,一方面前缀和算的方便一些,一方面涉及到前j个灯泡,那么如果从0开始,前3个灯泡就是第0, 1, 2, 3个,非常奇怪。所以灵活换下标。然后这道题的动规有点暴力枚举的意思,在算出前面答案的前提下枚举当前灯泡用多少去更新当前答案#includ...
阅读全文
摘要:总的来说就是价值为1,时间因物品而变,同时注意要刚好取到的01背包(1)时间方面。按照题意,每首歌的时间最多为t + w - 1,这里要注意。同时记得最后要加入时间为678的一首歌曲(2)这里因为要输出时间,也就是重量,那么这个时候初始化就要注意了。因为如果只是输出价...
阅读全文
摘要:这道题在递推方式和那个数字三角形有一点相像,很容易推出来但是这道题要求的是字典序,这里就有一个递推顺序的问题这里用逆推,顺推会很麻烦,为什么呢?如果顺推的话,最后一行假设有种情况是最小值,那么你怎么知道哪一种的是字典序最小?最后一行的数字最小显然不一定整个路径的字典序...
阅读全文
摘要:首先做一个转化,这种转化很常见。题目里面讲要来回走一遍,所以就转化成两个从起点到终点,路径不重合那么很容易想到用f[i][j]表示第一个走到i,第二个人走到j还需要走的距离但是这里无法保证路径不重合,所以这里怎么设计状态很关键。我们设f[i][j]是1到max(i, ...
阅读全文
摘要:很明显可以根据放不放建边,然后最一遍最长路即是答案DAG上的动态规划就是根据题目中的二元关系来建一个DAG,然后跑一遍最长路和最短路就是答案,可以用记忆化搜索的方式来实现细节:(1)注意初始化数组 (2)搜索的过程中最后记住加入状态本身的值,不然会...
阅读全文
摘要:影响到状态的只有时间和在哪个车站(空间),所以可以设f[i][j]是时刻i的时候在第j个车站的最少等待时间因为题目中的等待时间显然是在0时刻1车站,所以答案为f[0][1],那么就提醒我们从大推到小,然后可以发现d[T][n]一定等于0,所以这个可以作为边界条件。同时...
阅读全文