天津现场赛的一道题,说有两个密码串,每次你可以转第一个串连着的最多三个数,问最少转多少次能把第一串转成第二串。

开始以为是搜索,后来一看n<=1000直接吓尿…… 后来以为是字符串,但是怎么做也做不出来,尝试了贪心,也没什么好的策略……最后查了一下别人的解题报告才想起来是DP,一次连续转三个这么逗的条件还真像是给DP用的……

不过我的DP跟他们都不太一样,听说有人用f[i][x][y][z]表示:目前在i的位置,当前是z,前一个是y,再前一个是x,这样的话每次想办法把z转对了以后,就可以转移到f[i-1][ a[i-3] ] [x][y] 之类的了,转两个、三个改改x和y就好,应该说相当简洁明了,但是作者说他TLE了……  的确,虽然这么定义的话,状态复杂度是1000x10x10x10=100 0000,再乘以转移复杂度100(一会说)的话就是10 0000 0000, 乘上常数就相当勉强了,但是我用了记忆化搜索的写法,就不会出现这个事了…… 因为第二维实际上是给你看的,并不参与什么运算,起到的是一个辅助作用。记忆化搜索风格就是这点好,能不用访问肯定没戏的状态。

很多人不明白样例2那个12怎么算出来的,我一开始也是怎么算都是13,这跟转移方程的一点也有关系,就是你千万不要这么转:试着只转z把z弄对、转两个把z弄对、转三个把z弄对  这三个取一个最小值,这是不对的,最好的例子就是52 86,答案是4,这就是因为你要先两个都转3次,再单转个位一次,也就是说这三种操作在把当前位弄对这个过程中是完全可能混合出现的。怎么办呢?只能枚举在转z的过程中,x和y各沾了多少光了。所以转移复杂度并不是o(1)的,而是o(10x10)的。

具体实现的时候还要注意i-3超解的情况,注意到这里的时候特判一下。

记忆化搜索本来我觉得可能还是挺悬的,想再加点优化,结果直接500ms过了……

ACM练级日志:HDU 4433 Locker相关推荐

  1. ACM练级日志:HDU 4274

    是挺简单的一道题,但是却无限WA,总共修改了这么几个错误: 第一,每个人都至少要有一块钱工资,比如1号下面有2号,3号,2号有1块钱,3号有一块钱,那么1号至少要有3块钱才行,如果给出条件说1 < ...

  2. ACM练级日志:HDU 4735(ACM 成都网络赛) 重复覆盖与DLX

    今天费了一下午+一晚上的劲,终于把重复覆盖问题给解决了.作为这算法的牺牲品的就是成都网络赛让我知道DLX这东西存在的那道题,HDU 4735.这也是第一次尝试独立对问题构造矩阵然后调用DLX得出结果的 ...

  3. ACM练级日志:“不作死就不会死” --HDU 4283 4284

    4284是一道图论+搜索题--好吧,虽说标准解答是图论+DP题,h<=15似乎也在暗示着用二进制标记状态,但是我还是喜欢DFS,于是就去写DFS了.我最初的想法是求一下那15个点和1号点互相之间 ...

  4. hdu 4433 locker

    http://acm.hdu.edu.cn/showproblem.php?pid=4433 记忆化搜索+DP ans[x][f][ff]; 表示到a的第x位时 此位加f ,x-1位 加ff 的情况下 ...

  5. hdu 4433 locker(DP)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4433 题目大意:就是给你一个序列,相当于一个可以转的那种密码锁的初始状态,0往下转是9,9往上转是0,现在 ...

  6. ACM练级日志:set

    STL这个东西有时候会出乎意料的好用,第7篇那个让我写了200行的Treap用set这个玩意可以省掉很多代码--所以之后又用set重新写了一遍,正好以前也没用过set,记录一下,万一下次还有呢. se ...

  7. ACM练级日志: POJ 2155、1151

    这些日志仅供以后防止自己出现过去犯过的错误,起到一个注记的作用.若其他的ACMer觉得有用的话,本人也感到欣慰~ 最近一直在练线段树,说说线段树的"染色问题"和"计数问题 ...

  8. ACM练级日志:ACM2013 南京网络赛

    这篇日志是用来反省用的-- 本场比赛我们总共A3题,我1题,ztb2题,但是因为我的博弈树搜索卡了,导致我们没能上第四道题,虽然前面三题很顺利,但是这致命的一题还是卡死了我们的队伍. 先说说题吧,10 ...

  9. [HDU 4433]locker[DP]

    题意: 给出密码做的现状和密码, 每次可以移动连续的最多3列, 向上或向下, 求将密码调出来所需要的最少步数. 思路: 首先应看出,恢复的过程中, 调每一位的时间顺序是不影响的, 不妨就从左到右一位位 ...

最新文章

  1. Tomcat配置Jconsole , JvisualVm 监控配置
  2. solidworks完全卸载安装高版本
  3. 高薪必备的一些Spring Boot高级面试题
  4. 洛谷 P1071 潜伏者
  5. redis lettuce_Redis Client Lettuce 5 GA发布
  6. 史上最牛“老赖”,如今走下神坛:骗遍全国,牛皮终于吹破了!
  7. java 类型转换原理_9.java数据类型的转换
  8. signature=b21ede5d7e667b061a2058d2d4aba643,【D2D8524B18023CCDD6DBEEF2AB467
  9. 网站测试自动化系统—在测试代码中硬编码测试数据
  10. redis整理の配置
  11. 别人:OpenCV学习笔记(一)——安装配置、第一个程序(http://blog.csdn.net/yang_xian521/article/details/6894228)...
  12. mysql计算员工年终奖金_年终奖 扣税计算
  13. 二进制安装MySQL以及密码破解
  14. 微信开发之服务号设置
  15. CTF之PHP基础学习篇(一)
  16. 10年老司机,未必知道的IT基础知识
  17. 電影嘗試三 webtorrent-desktop在線觀看電影magnet
  18. 文件补丁管理 - patch
  19. 数据结构 第三节 第八课
  20. 从智能音箱发展,看智能家居的未来

热门文章

  1. yocto(七)——添加layer、添加内核模块、修改源码、制作补丁
  2. cmd切换盘符和路径
  3. 计蒜客题解——最大的余数
  4. 腾讯、优酷、爱奇艺视频一键转MP4格式工具
  5. Hugging face预训练模型下载和使用
  6. 石家庄铁道大学计算机科学与技术分数,石家庄铁道大学四方学院计算机科学与技术专业2015年在江苏理科高考录取最低分数线...
  7. java excel报表文件_JAVA导出excel报表
  8. python里怎么样求解微分方程?
  9. 四川省java版数据结构试卷_2014四川省JAVA版数据结构试题及答案
  10. Pima印第安人数据集上的机器学习-分类算法(根据诊断措施预测糖尿病的发病)