Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:Time Limit Exceed 哪位高人给个好的算法

Posted by wrtgj at 2009-04-22 16:03:27 on Problem 1040
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator