![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
萌之上荡漾
这个作者很懒,什么都没留下…
展开
-
hdu 5965 扫雷 ccpc 2016 合肥站
传送门分析: dp题目计dp[i][j][k]dp[i][j][k]为到第ii个位置,上下一共放jj个雷,前面一格放kk个雷个方案数。 枚举一下第i−2i-2位的雷数与第i−1i-1位的雷数,那么第ii位的雷数可以算出来。 如果放两个或不放,数目保持不变;放一个的话前一个状态乘2。 坑爹的是这道题模的是1e8+71e8+7,WA了一下午,真是坑死了。代码:/*****************原创 2016-11-06 21:06:25 · 852 阅读 · 0 评论 -
hdu 1069 Monkey and Banana
题目链接其实,dp我一直是拒绝的。这方面我一直十分薄弱。但是难关还是一定要攻克的= =如是我终于开始磕dp专题了。那就先从比较简单的问题开始吧。题目大意是有一些不同规格立方块无限个,把它们叠起来。要求下方的在横截面上长宽严格大于上面的,问叠起来最高的高度。分析:考虑到立方块可以交换长宽高,所以我把一个立方块变成六个不同的立方块来思考。将变换长宽高后的立方块按照关键词先后先a从小到大,再b从大到小,最原创 2017-03-11 18:30:09 · 141 阅读 · 0 评论 -
atcoder square869120Contest #4 D - Driving on a Tree
题目链接自己好菜啊,这道题A得好辛苦分析: 树形dp。第一次dp是从上到下的dp,统计以1为根的期望。然后第二遍dp分析一个节点的父亲对子节点的影响。具体的操作有官方题解。我也不赘述了。 这道题坑点在第二遍dp一开始对树根的处理吧,wa得死去活来。仔细想清楚了也就能过了。这种题我以前从来没有接触过,算盲区吧。。哎,我好菜啊代码:#include <iostream> #include <cstr原创 2017-04-12 20:02:57 · 380 阅读 · 0 评论 -
codeforces 149D Coloring Brackets
题目链接分析: 区间dp。 开四维dp[l][r][x][y],表示在区间[l, r]中,最左边涂x,最右边涂y,的可行状态数。 当l和r的括号配对的时候,可以从[l + 1, r - 1]推导出来。配对的括号要满足给定的要求。 当l和r的括号不配对的时候,那一定能把这个区间划分成两个配对的小区间,搜索配对的两个小区间。递归搜索两个子区间。这时候l和r的两个括号没必要满足颜色不同的要求。代码原创 2017-04-14 11:21:26 · 241 阅读 · 0 评论 -
hdu 4283 You Are the One
题目链接分析: 一道区间dp。因为有栈的约束,这道题用贪心是不可行的。 令dp[l][r]表示原区间[l, r]的人最小的花费。这里的最小花费是去除了前l - 1个以及后N - r个的。 考虑[l, r]中,第一个人在区间中的排序。因为是第一个人,他的位置会把整个序列切成两块。于是把整个问题分成了两个子问题。 dp[l][r]=dp[l+1][k]+dp[k+1][r]+(k−l)∗v[l]原创 2017-04-14 21:36:33 · 292 阅读 · 0 评论 -
hdu 2476 String painter
题目链接分析: 区间dp。开状态dp[l][r][c],表示[l, r]这个区间里染成c颜色的最少操作数。 考虑一段区间,我们从l开始染。枚举子区间[l, k],这段贪心地想,一定是染成和l的目标颜色一样才最优。然后把问题分解成两个子区间的问题就能解决了。如果区间中存在一段和目标一样的序列,那么这一段不需要染色,直接逃过。 dp[l][r][c]=min(dp[l+1][k][c[l]]+dp原创 2017-04-15 16:28:01 · 276 阅读 · 0 评论 -
2017CCPC女生赛 hdu 6024 Building Shops
题目链接分析: 想了个dp。令dp[i]dp[i]是最后一个冰淇淋站建在i的花费,那么有转移方程dp[i]=min(dp[j]+val[i]−∑dis[i]−dis[j])dp[i] = min(dp[j] + val[i] - \sum{dis[i] - dis[j]})看了一下,好像还有O(n)O(n)的dp方法,我要再学习一下。PS:感觉这一场可以和队友一起训练一下的,结果我自己智障,一个人原创 2017-05-17 15:56:38 · 681 阅读 · 1 评论