首页 > 其他 > 详细

HDU4949 Light (轮廓线dp)

时间:2014-08-15 19:41:39      阅读:760      评论:0      收藏:0      [点我收藏+]

题意:给你一个01矩阵,有两种操作:

第一种: 把a(i,j)的周围四个都异或一下

第二种: 把a(i, j)的周围四个和a(i,j)都异或一下

求把矩阵变成全0矩阵的最少操作次数


思路:如下图所示的轮廓线dp,逐格递推的,cur为当前决策的格子,红色线就是轮廓线,轮廓线以上的格子的操作状态都已经确定了,而对下面状态有影响的只有黄色格子,每个格子保存的是格子当前的数和它自己操作了多少次,因为无论是1还是2操作,对其他格子的影响都是一样的,这样子的复杂度是O(n*m*4^10),明显是会超时的。然后就是要想办法降低复杂度了,up这个格子如果当前状态是1,那么它还需要cur这个格子操作奇数次使得它达到0状态,也就是说cur格子必须要操作一次,那么up格子自己的操作次数实际上已经没用了,因为不管cur各种操作一次可以异或自己也可以不异或自己,所以cur这个格子可以是0也可以是1。那么就是说只有每个格子只有三种状态了,分别是格子是1,格子是0并且自己操作0次,格子是0并且自己操作了1次。需要注意的是left还是需要保存四个状态的,因为cur会影响left的状态。复杂度为O(n*m*4* 3^9)

bubuko.com,布布扣


code:


HDU4949 Light (轮廓线dp),布布扣,bubuko.com

HDU4949 Light (轮廓线dp)

原文:http://blog.csdn.net/jayye1994/article/details/38588043

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!