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 |
四点需要注意一下(附解题报告)1、等级的处理:题中规定等级超过m的物品不可以交换,包括间接交换。比如a、b、c等级为1、2、3,如果等级限制为1的话,不可以通过a换b,b再换c这种方式,因为a与c的等级超过1。所以如果单次dijkstra求最短路径时,我们很难确定是否加入非集合S的的节点,因为不清楚当前节点是否满足等级要求,或者是否对未来要加入节点等级造成影响。所以目前采用的是枚举范围的方法,有一个事情我们是确定的,即初始节点的等级一定是在等级范围里的。所以我们枚举(lev[s]-m, lev[s])到(lev[s],lev[s]+m)等级范围。在处理最短路径新加入节点时要求节点等级大于等于最低等级,小于等于最高等级。 2、有向图问题:A物品可以用B物品和C个金币代替,表示A到B的边权为C,但是并不说明B到A也有一条权为C的边,注意! 3、初始化问题:既然要多次运行dijkstra,那么每个节点的最小路等一定要初始化。我前几次WA就是错在这里,因为每次dijstra数据具有相似性,所以好多数据都检查不出来。 4、表示无穷大的INF=(1>>30)-1足够,邻接矩阵用int也足够,并不像DISCUSS中有人提到的要开INF=(1>>31)-1. 解决报告源码: http://blog.csdn.net/koala002/archive/2011/04/12/6317368.aspx Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator