随笔分类 - DP
摘要:一.能量项链 https://www.luogu.org/problem/P1063 (这道题和紫书里的最优矩阵链乘很像) ①分析样例: 4 2 3 5 10 我们把它写成4个乘法表达式: 2*3 3*5 5*10 10*2 合并它需要3次乘法: 10*2*3 3*5 5*10 能量+60 10*2
阅读全文
摘要:题目给了一个矩阵,要求一来一回点权和最大,而且走过的点不能再走 最开始我是这么想的: 顺着来一遍,记录路径,清空路径上的好感度,再反着来一遍。 结果出错了,为什么? 因为这样做能保证第一条路一定点权和最大,但不能确保一来一回的点权和最大(样例都过不掉) 所以我们把求两条严格不相交路径看成两个人同时从
阅读全文
摘要:此题与LCS非常相似。 因为是两个串的比对,所以我们很容易想到用f【i】【j】来表示a串的前i个碱基和b串的前j个碱基配出的最大相似度(每一个碱基都配对一个碱基,或者配空碱基), 那么这个状态的前驱就有三种: ①f【i】【j-1】+(b【j】与空碱基的相似度) ②f【i-1】【j】+(a【i】与空碱
阅读全文
摘要:这道题是紫书里的,以下的主代码也来自紫书,但笔者会在这里做一些补充说明。 本题中把单向流逝的时间作为拓补序,用时刻和位置作为状态参数, dp【i】【j】表示在i车站,j时刻时还需等待的最少时间(其实通常我们把表示阶段的放在前面) 边界是这个:dp[n][tm]=0; for(int i=1;i<n;
阅读全文
摘要:OpenJudge - 1001:嵌套矩形问题http://cdsdzx.openjudge.cn/practice/1001/ 这是紫书里嵌套矩形问题的简化版 注意要将d数组初始化为0,如果初始化为1的话,在记忆化上会出错。 代码如下(核心代码来自紫书) #include<iostream> #i
阅读全文
摘要:目前整理了两种做法 方法一: 设a为输入的字符串,num【i】【j】表示字符串中从下标为i到j(故从0开始)的一串数字。那么可以得到 for(int i=0;i<n;i++) num[ i ][ i ]=a[ i ]-'0'; for(int i=0;i<n;i++) for(int j=i+1;j
阅读全文

浙公网安备 33010602011771号