poj2965-poj2965-The Pilots Brothers' refrigerator

方法同poj1753,但用在这题就TLE了,以下是TLE版本:


Code

 

 优化过程:将需要改变的状态存放在一个一维数组当中,这样就减少了每次改变状态时的开销。如下所示:

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

 

Code
posted @ 2009-03-26 11:07  MyShowTime  阅读(379)  评论(0编辑  收藏  举报