Saturday, September 24, 2011

Party Lamps 题解

很容易知道:
如果一个按钮被按下两次,就相当于一次都不按,按下按钮2+3就相当于按钮1。
按钮的先后顺序不会影响最终结果。
因此,可以缩小C的大小。
if(C > 4)
{
if(C % 2) C = 3;
else C = 4;
}
这样DFS就可以通过所有数据了。

进一步优化:

观察发现,灯泡的情况每6个循环一次(2x3=6),因此,只要计算前6个灯泡的情况就可以了。
这样,就可以用位运算提高速度了。

No comments:

Post a Comment