2019.7.16海亮暑假集训Day11考试总结

  对于代码和题目详见百度网盘,这只讲思路。

  T1,首先吐槽一下,这一道题数据有点水啊,我一个交到洛谷上的错解在这里却对了......这之前搞得我很慌......

  首先一看即可知道这是一道区间DP,但是转移有一点烦,我们看看,

  要会贪心,显而易见的,这一道题目最好是化成一个回文串了之后再做改变,这一点是肯定的(大胆猜想不用证明)。

  (可是我就是这个没想到啊!)

  因此我们可以把一个区间分成两段:

  1,f[l][r]=min{f[l][k]+f[k][r]}就是这一个要消掉

  2,f[l][r]=min{f[h+1][t-1]}(for(h=l,t=r;a[h]==a[t];h++,t--))这是假如有回文串那么这个也算,最后回文串会合成一个,不用消。

  但是在考试的时候,我还想到了一种情况(如下):

  这一个的话l~t1,t~r也会合成回文串,但是这一个是一个重复情况,为甚么呢?首先我们在做区间h~t的时候已经统计了这个答案,这个f[h][t1]的值也是1,所以在最后的时候对于区间l~r我们的最优解如果是f[h][t](如果这个不是最优解根本就不会产生这么一种情况)如果按照原来的算,那么答案就是f[t1][t]+1,这个其实就是f[h][t],没什么大碍......

  T2,这一道题告诉我们——暴力出奇迹......

  首先,这一道题通过题目已经告诉我们了——dfs,纯dfs一定不行,所以要记忆化,我们发现这一道题的电梯最多有4个人,所以我们可以把这一个值储存起来dfs(用Hash来储存),那么就很好做了,首先,我们存4个变量:1,id目前为止的做到的个数,x当前的行数,op他的上一行是怎么跳的(就是下一步要怎么跳0,1,2表示,对着代码感性理解一下......)sum对于一个状态的Hash值,那么我们就可以dfs了......

  T3,不会......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值