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 |
Re:Time Limit Exceed 哪位高人给个好的算法In Reply To:Re:Time Limit Exceed 哪位高人给个好的算法 Posted by:wrong123 at 2006-01-06 21:35:19 > 这道题感觉是个很好的 DFS 题目。 在车站一条线上进行搜索,回溯。 > > 然而,如果不进行优化剪枝的话,肯定会TLE,我在本机使用前面一位 > 同学提供的数据,直接运行了一下你的程序,大约要2秒钟。。。 > > 优化可以这么做: > 1.calss A中可以增加两个域: > P---表示本次order的总价值,它等于 (终点-起点)*人数 > R---表示选择本order后,剩余价值--即最多还可得到多大收益 > > 2.读入n,m,l,对P降序排列后,在计算各个order的R,这样很明显的 > 结论就是: > 假若我在某个车站展开DFS,如果"当前收益+该节点的R<max"则 > 直接在这个节点return,无需再往下搜索。就是在你的DFS循环 > 里的flag前面加上:if(total+p[i].R < max) return; > > 本机运行了一下,速度很快。 这里运行一下46ms > 不知是否还能再进行优化剪枝? > 或者使用C的输入输出,速度更快一点15ms,但这没啥意义。。。。。 通过你的办法,剪枝成功,谢谢了 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator