区间dp
untilyouydc
月份未到你也得接受
展开
-
HDU 6365 Shoot Game(区间dp+离散化)
Problem DescriptionYou are playing a shooting game. The rules of the game are like this: You are in a two-dimensional plane and stand at (0,0). There are some obstacles above the x-axis. The locatio...原创 2018-08-08 21:43:04 · 523 阅读 · 4 评论 -
Recovering BST CodeForces - 1025D (区间dp + 暴力枚举)
Dima the hamster enjoys nibbling different things: cages, sticks, bad problemsetters and even trees!Recently he found a binary search tree and instinctively nibbled all of its edges, hence messing u...原创 2018-08-27 23:21:55 · 276 阅读 · 0 评论 -
Expression HDU - 5396 (区间dp +组合计数)
题目大意:给你一个n然后是n个数。 然后是n-1个操作符,操作符是插入在两个数字之间的。 由于你不同的运算顺序,会产生不同的结果。比如:1 + 1 * 2 有两种 (1+1)*2 或者 1+(1*2)1 * 2 * 3 也是两种即使结果是一样的 (1*2)*3 或者 1*(2*3)问这所有不同的组合加起来的和对 1e9+7取余是多少。 这个其实就是区间...原创 2018-09-24 13:55:43 · 181 阅读 · 0 评论 -
Sit sit sit HDU - 5151 (区间dp +组合计数)
这道这道区间DP,我也开始觉得其实区间DP是一种应用型的思想,做这类题目一个重要的点是在于题目情景的把握,这道题的一个情景就是数学的排列组合问题. 首先应用根据小区间推出大区间的思路,我们可以先固定一个位置k,k位置是最后做的位置,那么我们要算出在这种情况下符合的方法数,假如k是头或者尾,那不用说, 此时的方法为dp[i+1][j]或者是dp[i][j-1]; 假如k是有邻居的,那我们就要考虑邻...原创 2018-09-24 15:23:00 · 299 阅读 · 0 评论 -
The Child and Polygon CodeForces - 437E (计算几何+记忆化搜索)
思路:先将点按顺时针或逆时针排序。对于从i点到j点之间的方法数,考虑枚举中间点k,前提是k必须在i和j的中间(利用叉乘的正负值就可以判断)dp[i][j]+=dp[i]k]*dp[k+1][j];代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e2+7...原创 2018-09-25 21:36:21 · 207 阅读 · 0 评论 -
Exploring Pyramids UVA - 1362 (区间dp+计数)
思路:这题的关键是去枚举回到根节点的点,要求回到根节点的点必须和根节点相同(因为每种字母只要一个,相等必须回去)。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=3e2+7;const int mod=1e9;char s[maxn];ll dp[...原创 2018-09-25 22:54:56 · 163 阅读 · 0 评论 -
Optimal Binary Search Tree UVA - 10304(区间dp +前缀和)
思路:一个很明显是思路是,在i到j区间内枚举k,让k成为根节点。这样做是否满足最优子结构和无后效性?答案是肯定的,首先在任意一个子区间的最小值,都对最后答案有恭喜,其次,当前区间的最小值,和后面的元素,没有关系。知道了枚举根节点的思路后,还有一个问题,那就是当k成为根节点以后,答案的变化是怎么的?首先,当k成为根节点后,它的贡献是0,其次,其他点的深度应该+1,也就是每个点的值要加一倍,所以求...原创 2018-09-26 09:10:39 · 160 阅读 · 0 评论 -
Optimal Array Multiplication Sequence UVA - 348(矩阵连乘问题,区间dp+记录路径)
思路:要求乘的次数最小,分析子最优子结构:任意一个区间的最小乘次数,取决于先乘那几个(等价于最后乘那两个),所以思路就是去枚举最后乘的那个就行。状态转移方程:dp[i][j]=min(dp[i][k]+dp[k+1][j]+a[i]*b[k]*b[j]) k>=i&&k<j;难点在于如何输出路径:可以在计算最小值的时候,记录枚举出的最小的k,也就是说dp[i...原创 2018-09-26 19:06:47 · 230 阅读 · 0 评论