方法同poj1753,但用在这题就TLE了,以下是TLE版本:
优化过程:将需要改变的状态存放在一个一维数组当中,这样就减少了每次改变状态时的开销。如下所示:
int state[MAXSIZE]={
0xF888,0xF444,0xF222,0xF111,
0x8F88,0x4F44,0x2F22,0x1F11,
0x88F8,0x44F4,0x22F2,0x11F1,
0x888F,0x444F,0x222F,0x111F};
0xF888转换为二进制是1111 1000 1000 1000,换一种格式:
1111
1000
1000
1000
表示改变坐标(0,0)的状态时第一列和第一行的状态都要改变,这样只要和当前状态XOR一下就可以得到新的状态了。
再次提交了一次任然是TLE。。。看来效果不是很明显。
继续改进,发现队列用的是链表实现,效率没有用数组高,因而将链表用数组全部重写。
再次提交,果然AC了。
| Run ID | User | Problem | Result | Memory | Time | Language | Code Length | Submit Time |
| 4856540 | zen_chou | 2965 | Accepted | 1220K | 219MS | C | 2387B | 2009-03-26 17:27:36 |