高神 SHU 3.12 DP2 总结

/*******废话部分******

发现自己做以前会的题都忘了,所以要好好总结一下,减少遗忘。

*/

/*****搜索引擎优化部分*****

高神 高神 高神 高神 高神 高神 高神 高神 高神

*/

这个专题是高神开的DP2,都是高神精心挑选的题,要认真刷。

高神开的DP2比赛链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=71636#overview

密码:shuacm

A – Barcode

题意:给你一张n*m的图,让你把它变成一张类似条形码的图,其中白色和黑色部分都要在[x,y]之间。

解法:两个状态,分别为当前列和当前颜色,保存所需的最小代价。这样就可以实现了。

总结:尽量用少的状态来实现。

B - Porcelain

题意:给你n个架子,每个架子只能从左右拿出物品。问拿出k个物品,所能取得的最大值。

解法:分步骤:第一步先求出只在一个架子取出k个的最大值。

              第二步类似0-1背包,递推架子,求出最大值

总结:碰到困难的问题,分布来实现。

C – Camels

题意:给你n个点,k个驼峰,求出可能的种数。(驼峰只能由1,2,3,4组成)

解法:因为驼峰,驼谷由三个状态组成 ,至少需要保存前两个状态。

四个状态:当前点序号  i-1  i  第几个驼峰

总结: 充分利用题目信息来Dp,不要自己想乱七八糟状态。

D - DZY Loves Sequences

题意:给你一个长n的序列,求最长连续上升子序列。允许修改一个值。

解法:第一步先求出不允许修改的递推。第二步再找出允许修改递推。

总结:先实现简单,再实现复杂一些状态。

E - Wall Bars

题意:建造一个梯子,使得人能够爬到最上面h个中的任意一个。梯子长n,有四个方向,人一步最多h长。

解法:任意选一个方向,旋转4次,从而DP。

              四个状态记录的是同方向离它最近的距离。

              其中一个为当前的方向,可以省略记为可达和不可达,也就是两个状态。

总结:根据题目信息来分状态。这种方向不确定的,可以任意假定一个状态,再DP。不能单纯的乘以4,因为会有重复的状态出现,还需要去重。

F - Positions in Permutations

题意:求一个1-n的全排列中,友好度恰好为k的序列有多少个。友好的定义:|A[i]-i|=1;

解法:要使一个位置友好,必须填的是i-1 或 i+1

         第一步:先求出正好满足k个位置为友好的方案数。不考虑剩余的n-k个位置。(假设在位置i的数 在不填充 i-1 或 i+1时存在可以填充其他值)

          状态为:   当前位置 ,k, i , i+1    然后进行DP

         第二步:第一步假设前提下,F[k]=D[n][k][][] *fac(n-k) 即为大于等于k个友好的方案数。

    而要求的是恰好为k个友好的方案数。最基本的想法是F[k]-F[k+1],但是这样是错的。因为这是在假定前提下实现的。假定不一定成立的。

    也就说F[k]的值是大于前面所说的“大于等于k个友好的方案数”,因为多包含了一些本来应该算作是F[k+1]的方案。

      如 n=2,k=1;

      全排列为:1 2

                  2 1

      F[1]=2;

      F[2]=1;

    但是事实F[1]=0,不满足假设的条件;

      既然会有不满足的,就反其道行之直接减去所有可能不满足的即可。

           设Ans[k]为恰好为k个友好的方案数,即题目所求。

           因为计算时假设在位置i的数 在不填充的i-1 或 i+1时存在可以填充的其他值,

      那么减去时也假设在位置i的数 在不填充的i-1 或 i+1时存在可以填充的其他值,

      这样就相互抵消了。

    然后继续递推就可以求解了。

总结:神一样的思路。这个看智商的……以后继续跪。

G - Sereja and Subsequences

题意:给一个长度为n 的数组。可以求所有的不同的非递减子序列。

对于每个非递减序列,求出和它长度相等,且字典序小于等于它的个数。问总共的个数。

解法:其中有个关键点是不同的非递减序列。要实现不同的非递减序列,可以先根据他们的ID[ i ]排序,这样就可以避免重复的问题。

接下来用树状数组来实现log(n)的递推。

总结:神一样的思路。碰到“不同的”子序列,可以往树状数组方向考虑一下。

原文地址:https://www.cnblogs.com/baobaopangzi88/p/4361413.html