JOZO 火车月票

 

小方乘车

jozo.exe/jozo.in/jozo.out

题意描述:

无家可归的小方买了一张火车月票,这样他就可以躺在车厢里梦想未来的美好生活了。

已知所有的火车站,连接火车站的铁路和它们的长度(也就是火车开完这条铁路要多少时间)。铁路是双向的,而且无论沿着哪个方向开,所需时间都是相同的。

你还知道所有火车的出发时间和它们经过的车站,火车每到达一个车站都会停一停。

开始时(时刻1)小方在车站1,他必须在时刻T1T2这个区间内回到车站1(他也可以在时刻T1以前回到车站1然后安静地等到时刻T1)。如果在同一时刻同一车站有两辆火车,他不需花任何时间就可以从一辆车跳到另一辆上。

请你写一个程序,选择一条旅行路径使得小方在车站等车的时间最少。

 

输入文件(jozo.in)

输入文件的第一行有5个整数NPVT1T22<=N<=10001<=V<=10001<=T1<=T2<=50,000N表示车站的数目,P是铁路的数目,V是火车的数目,T1T2的意思在前面已经说过了。

接下来的P行,每行表示一条铁路。每行有三个整数S1S2T。表示火车从S1开到S2(反之亦然)需要T秒,1<=T<=600

接下来的V行,每行包含一辆火车的信息。第一个整数T0表示火车的出发时间,第二个数NS表示该火车的路径上有多少车站(包括起始站和终点站),1<=NS<=1000。后面的NS个数按照顺序列出了火车将要经过的车站。火车到达终点站就停在那里不动了,所有的乘客必须离开火车。

同一行的所有数据都用空格隔开。

 

输出文件(jozo.out):

最少的等车时间。

输入样例:

4 4 3 30 35

1 2 5

2 3 2

2 4 7

3 4 3

2 4 1 2 4 3

14 4 3 4 2 3

28 3 3 2 1

 

输出样例:

6

 

 

 

先按每辆火车到达的时间排序,然后dp即可.......

当然这样是N^2的,自然过不了,所以我们用LAST优化,LAST[I]表示JOZO到达第I个车站的前一个车站(也就是JOZO从哪一个车站来的)的最晚时间,这样的N^2自然很快了。

 

 

 

 

 

顺便说一句,这个跑得比xqz和ld要快一些,为什么吗?我也不知道......

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值