区间dp
区间dp
gongyuandaye
不要再问我会不会写可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP了。
展开
-
HDU 6831 Fragrant numbers (区间dp+预处理)
题意:“1145141919” 的无穷串,给出一个n,要求选最少的num,使得前num个数中间添加任意括号、加号、乘号,计算结果等于n。 题解:区间dp+预处理 dp[i][j][val]dp[i][j][val]dp[i][j][val]:[i,j][i, j][i,j]区间内是否能计算出valvalval。 于是可得转移方程: dp[i][j][v1+v2]=dp[i][mid][v1]与dp[mid+1][j][v2]dp[i][j][v1+v2]=dp[i][mid][v1]与dp[mid+1][j原创 2020-08-06 23:11:23 · 368 阅读 · 0 评论 -
Gym 101196F Removal Game (环形区间dp)
题意:给出一个序列,每删除一个数的代价是相邻两数的gcd,求最小总代价。 题解:区间dp 区间dp跑完之后,不是枚举每一段长度为n的序列求最小,因为最后剩下的两个元素没有中间值,所以要接着枚举是哪两个元素,然后更新最小值。 注意预处理gcd。 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<string> #include<cstring> #includ原创 2020-05-09 16:28:42 · 287 阅读 · 0 评论 -
CodeForces 149D Coloring Brackets (区间dp+dfs)
题意:给出一串括号序列,每对括号只有一个括号能够上色(红或蓝),相邻括号不能上同一种颜色,求多少种上色方法。 题解:区间dp+dfs dp[l][r][i][j]dp[l][r][i][j]dp[l][r][i][j]:lll到rrr间有多少种上色方法,iii、jjj为边界上色情况(0表示无,1、2表示红或蓝) 先预处理每对括号的匹配情况,用match[]match[]match[]表示。接下里递...原创 2020-04-23 10:59:29 · 120 阅读 · 0 评论 -
CodeForces 245H Queries for Number of Palindromes (区间dp)
题意:给出一个字符串,再给出k个询问,问区间里的回文子串有多少个。 题解:区间dp 问有多少个,肯定要标记iii开头jjj结尾的字符串是不是回文串,用isp[i][j]isp[i][j]isp[i][j]表示。 用dp[i][j]dp[i][j]dp[i][j]表示区间有多少个回文串,包含以i+1i+1i+1开头或者以j−1j-1j−1结尾的回文串,以及dp[i+1][j−1]dp[i+1][j-...原创 2020-04-21 17:43:02 · 141 阅读 · 0 评论 -
POJ 2955 Brackets (区间dp)
题意:给出一串括号序列,求能组成合法括号序列的括号个数。e.g. “([][][)”,答案就是6 题解:区间dp 注意kkk的选取。 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<string> #include<cstring> #inclu...原创 2020-04-21 17:34:14 · 115 阅读 · 0 评论 -
HDU 4745 Two Rabbits (区间dp)
题意:两只兔子,在n块围成一个环形的石头上跳跃,每块石头有一个权值ai,一只从左往右跳,一只从右往左跳,每跳一次,两只兔子所在的石头的权值都要相等,在一圈内(各自不能超过各自的起点,也不能再次回到起点)它们最多能经过多少个石头。 题解:区间dp 其实就是求最长回文子序列长度,对于一个环,可以先求iii到jjj之间的最长回文子序列长度,然后选取一个分割点kkk,这样就不需要再复制一份接到原串后面了,...原创 2020-04-21 17:27:49 · 147 阅读 · 0 评论 -
LightOJ 1422 Halloween Costumes (区间dp)
题意:有n个聚会,每个聚会都会规定穿什么衣服,你可以将衣服套着穿,但是衣服脱下来就不能再穿了,除非再买一件,求至少需要多少件衣服。 题解:区间dp 用dp[i][j]dp[i][j]dp[i][j]表示第iii天到第jjj天最少需要多少件衣服,逆着区间dp。 我们先假设第iii天和第i+1i+1i+1天衣服不同(即使相同后面取min也会忽略),那么可以得到转移方程:dp[i][j] = dp[i ...原创 2020-04-18 21:34:19 · 216 阅读 · 0 评论 -
ZOJ 3537 Cake (凸包+区间dp)
题意:给出一个多边形,判断一下是不是凸包,再进行最优三角剖分(剖分方法为用不相交的线切割),使得三角形数量最多切割成本最小。 题解:凸包+区间dp 先判断是不是凸包。然后根据点的位置远近排序好的点进行区间dp。 我们用dp[i][j]dp[i][j]dp[i][j]表示剖分iii到jjj之间的点所需的最小成本。那么就可以得到转移方程: dp[i][j] = min(dp[i][j], dp[i][...原创 2020-04-18 16:58:25 · 183 阅读 · 0 评论