
动态规划 -- 区间DP
Object_S
Java C++
展开
-
AW284 金字塔
题目地址 易错点: 题目给出的是欧拉序,也就是每个点的颜色不重复。因此,就可以利用相同颜色的点作为一个阶段进行dp. 因为需要模数,不能直接使用+=,即应当使用f[l][r]=(f[l][r]+dfs(l+1,k-1)*dfs(k,r)%mod)%mod. 划分点(k)可以从l开始,这是因为不合理的情况都被颜色剪枝了. #include<cstdio> #include&...原创 2019-08-05 20:06:02 · 163 阅读 · 0 评论 -
AW282 石子合并
题目地址 易错点: 要清楚动态规划的基本概念和应对方式. 原题有环,处理环的话需要断开接一倍. #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int MAXN=350; int f[MAXN][MAXN],sum[MAXN],a[MAX...原创 2019-08-05 16:56:09 · 120 阅读 · 0 评论 -
AW283 多边形
题目地址 易错点: 由于需要在一开始减少一条边且相邻输入数据在图上相邻,需要将输入的运算符复制一倍后向左平移一个单位. 乘法的状态转移需要注意负负得正,也就是说,最大值可以由两个最小值推导出来。因此,需要保存最小值,也就是使用f[l][r][0/1]分别保存最大/最小值。而最小值也有可能由多种情况推导出来,因此如果拿不准可以四种情况都尝试进行转移. 输出答案时不能直接输出f[1][n]...原创 2019-08-06 01:58:12 · 215 阅读 · 0 评论