AGC043 A 范围很小, 直接$O(n^4)dp$ B 题意 给定长$n$的序列$a$, 只含$1,2,3$. 有$f_{k,x}=|f_{k-1,x}-f_{k-1,x+1}|,f_{1,x}=a_x$. 求$f_{n,1}$ 先特判掉$n=1$的情况, 那么答案只能为$0,1,2$ 答案的奇 ...
分类:
其他好文 时间:
2020-06-13 12:53:12
阅读次数:
62
CF1366G Construct the String 题解 我们把题目中的函数 \(f(s)\) 叫做「转换」。 用一个很朴素的dp:\(f_{i,j}\) 表示 \(s\) 前 \(i\) 位最少删除几个位置使得转换后等于 \(t\) 前 \(j\) 个位置。 边界就是 \(f_{0,0}=0 ...
分类:
其他好文 时间:
2020-06-13 12:50:31
阅读次数:
97
Week10(线性DP)拿数问题、LIS&LCS 思路分析: LIS(longest increasing subsequence)最长上升子序列,意思是一个序列中递增的序列最大个数。首先要理解子串和子序列的概念。 (1)字符子串指的是字符串中连续的n个字符,如abcdefg中,ab,cde,fg等 ...
分类:
其他好文 时间:
2020-06-13 11:03:25
阅读次数:
60
##LIS(最长上升子序列) LIS是动态规划里面的一个基础的问题,接下来我们讨论一下它的求法。 ###解一:暴力枚举 我们需要求的是不下降的子序列,所以朴素的想法,当我们面临a[i]的状态,我们可以从a[1]开始枚举元素,每次去判断这个元素是否小于a[i],如果小于那我们就可以更新dp[i]的值为 ...
分类:
其他好文 时间:
2020-06-12 20:29:43
阅读次数:
55
看到数据很小,且 \(DP\) 很难记录状态的题大概就是网络流量了,可以用网络流想一下 首相考虑费用流的特性,流量会流满,利用这一点,我们可以满足每天需要的餐巾纸都能被提供 考虑餐巾纸用过后会变成脏餐巾纸,利用流量的特性将没洗的留给第二天,但是这有出现了一个问题,每天,既用卫生纸,又产生脏卫生纸,这 ...
分类:
其他好文 时间:
2020-06-12 13:04:51
阅读次数:
63
题目链接 #解题思路 状压dp入门题,也是经典的tsp问题。因为tsp问题是np完全问题,所以我们只能考虑通过大量枚举来做。需要注意的一点是,如果走过了1->2->3这样一条路径,要到达第4个点的话,并不一定需要从3出发,只要从前面走过的点出发即可,所以我们并不需要把所以的点按前后顺序走出来的情况全 ...
这道题明显的树形DP,但是我有一个邪恶的想法,让他变成多叉树,而且不用返回可以幻影移形,但是得走回来才能去另一条走廊。这看起来很恶毒,我也不知道怎么做。 做法大家都解释的差不多了,这里我主要说一下毒瘤的读入 这道题的读入与这篇博客所讲的题目的输入非常相似 void init(int &x){ x=+ ...
分类:
其他好文 时间:
2020-06-11 20:04:20
阅读次数:
55
dfs实现数位DP int dfs(int d,int m1,int m2,bool fl) d:正在填从右往左第d位 m1表示数字和%k余数,m2表示该数%k余数 fl=1表示达到当前上限,0表示没限制(数位DP常规操作)…… 我一开始是从最高位开始枚举的,但是出了些问题,现在这个写法是从最低位枚 ...
分类:
其他好文 时间:
2020-06-11 19:45:26
阅读次数:
50
动态规划 思路: 用dp[i][j]表示A的前 i 个字母和B的前 j 个字母之间的编辑距离。 则边缘部分dp[i][0] = i ,dp[0][j] = j ,因为要把A的前i个字母变成B的前0个字母也就是空串需要删除A的i个字母即可。同理要把A的空串变成B的前j个字母,需要在A中添加B的前j个字 ...
分类:
其他好文 时间:
2020-06-11 13:26:39
阅读次数:
57
给定一个技能数组,再给定一些人和他们拥有的技能,求最少多少个人拥有的技能可以覆盖给定的所有技能。这道题比较容易想到用dp做,看到了技能最多只有16个,可以尝试用数位dp来做。把每个人拥有的技能转换成对应的数字,我这里是把一个人的技能直接合起来变成一个数字,可以加快运算,然后去求每个状态需要的最少人数 ...
分类:
其他好文 时间:
2020-06-10 13:26:22
阅读次数:
62