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 |
1435778 frkstyc 72K 15MS GCC 5965B ---- frkstyc大牛怎么做到这么快的?In Reply To:剪枝方法大致见内 Posted by:alpc04 at 2006-08-07 17:32:52 > 根据输入字符串可得到一个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