这是noip2009 的第四题,也是一道让我心痛不已的题目……
拿到题目发现这显然是一到搜索,这不难看出。可能有人用dancing links 来解这道题,我认为这确实是正解,但不得不承认dancing links是一种比较高级的数据结构了,并非那么轻易就掌握的。
既然如此,单纯的但富有有技巧的搜索能不能解决这个问题呢?答案是肯定的!我今天的这个代码用到了位运算判重——这是可以过掉80%的测试数据的。如果注意搜索顺序,加以改进便在0.5s之内就解决了问题,远远小于2s的时间限制。
当然,可以看出我的这份代码还有优化的空间。搜索顺序中我只考虑了行的因素,那同理,列与九宫格也可以一起考虑进来一起排序。另外,这个顺序是动态的,如果用堆来维护,效果会更好!而且,我还没有加上对于ans的最优化剪枝!可以说优化空间巨大!
不过,抛开对题目的剖析,仅仅从应试的角度来看,下面的代码,不仅仅AC了这道题,也将编程复杂度降到了理想的水平。应该说在noip中,为这道压轴题敲出130行的满分代码不会占用其他题目过多时间,十分划算!