Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
剪枝方法大致见内In Reply To:那怎么剪枝啊? Posted by:huacm01 at 2006-08-06 18:09:35 根据输入字符串可得到一个a*b的活动区域 一般的这个区域要比6*6小 因为棋盘的边框也可以看做wall 所以让活动区域贴着棋盘的角时可以得到最优 起始位置的枚举就是4次 远小于36次枚举 wall的枚举就在a*b的活动区域中进行就行 把wall之间的intersection和wall和input之间的cross剪枝掉 但有些wall的长度>max(a,b) 要再处理一下 枚举出wall和startpoint之后把B题的代码cp过来做BFS 但因为B题本身就是Spj题目所以直接得到的序列可能和输入字符串不同 就会出错 这时不用再做类似spj的判断 把B题的代码改一下就好了--把输入字符串第i步的方向作为BFS第i层的优先方向先压入队列即可(有点估价函数的感觉) 我就是这样剪枝的 G++ 93ms 应该还有更好的剪枝 大牛指教! Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator