bzoj1289: [CTSC2009]移盘子

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1289
思路:真好玩啊以为是神题却,,,但我无论如何都没A掉,,,想法非常简单,就是贪心,只能过7组数据我也不知道为啥难道贪心是错的?先不看那些,我们目标是总个数最小对吧,观察:
得到:最上面的不是1只需要移动1次,最下面的1不用动
我们考察每类盘子的平均移动次数,有以下几种大致的贪心策略:
1.1整体在2,3柱子移动,不断修正,(*,1,1)
2.将2,(或3)还原,类似的可以将1和2 还原(,3,1)、(,1,3)
3.分段计算:将序列分为以1为首的若干小序列,每个序列取最优解即可得到
,*)
4.将1全部取出,然后还原1还原2,3(2,2,3),(2,3,2)
明显第2个策略最优了,,,这里是没类盘子的移动次数,类似于复杂度分析,,,不要在意这些细节嘛,,
好吧,那么这个很优了已经,一些“常数”优化就是在最后移动的时候加一点小技巧但不影响总体”复杂度“,让我们考虑,有没有更优的呢?答案是没有的啊,,
思考,可知1对应的一定时(2):移入和移回
2和3能否做到(1,1)(1,2)(2,2)呢?
首先至少是(1,1)然而除非不存在1否则不可能然后呢,可以是(2,2)吗,,?首先不可能存在,即使存在也不会更优;那(1,2)呢?也不可以,假设可以,那么假设2直接还原,那么3柱必然是含1的混杂部分,,那么还需要至少2次对吧,,因此不可以的,,其实都是些显然的东西说了一堆就是想更形式化证明一下
于是最优策略就是第一个贪心了,,可以算的(3,1,2)+最后的小小改动 = 70,,,不知道哪里有错求神犇解法,

你可能感兴趣的:(bzoj1289: [CTSC2009]移盘子)