码迷,mamicode.com
首页 > 其他好文 > 详细

HDU4949 Light (轮廓线dp)

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

标签:style   blog   http   java   2014   div   log   javascript   

题意:给你一个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)

标签:style   blog   http   java   2014   div   log   javascript   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!