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 wrong123 at 2006-01-06 21:35:19 on Problem 1040
In Reply To:Time Limit Exceed 哪位高人给个好的算法 Posted by:faononl at 2004-02-28 17:02:25
这道题感觉是个很好的 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