atcoder#AGC011F. [AGC011F] Train Service Planning
[AGC011F] Train Service Planning
题目描述
高橋王国には, 本の鉄道路線が走っています. この路線は 個の区間 , , ..., と 個の駅 , , ..., からなり,区間 は駅 と駅 を直接結んでいます. 列車が区間 を走行するには,方向によらず,ちょうど 分かかります. また, 個の区間のそれぞれは,区間全体にわたって複線であるか,区間全体にわたって単線であるかのどちらかです. のときは区間 は単線, のときは区間 は複線です. 複線の区間では両方向の列車がすれ違うことができますが,単線の区間ではすれ違うことはできません. ただし,列車が駅にいる場合は列車同士がすれ違うことができます.
すぬけ君は,この路線に図のように 分間隔で列車を走らせようとしています.ここで,太線は列車が走行している位置を表します. (詳しくは,入出力例 1 を見てください.)
このとき,駅 から駅 までの列車の所要時間と,駅 から駅 までの列車の所要時間の合計の最小値を求めてください. この問題の制約の下,適切な列車の走らせ方が存在するとき,この最小値は必ず整数になることが証明できます.
なお,列車の発車時刻や到着時刻が満たすべき条件は,厳密に書くと下のようになります.
- どの列車も,駅 を出発して駅 まで向かうか,駅 を出発して駅 まで向かうかのいずれかである.
- どの列車も,区間 をちょうど 分かけて走行する.例えば,駅 行きのある列車が駅 を時刻 に出発したなら,この列車は駅 にちょうど時刻 に到着する.
- ある駅で,時刻 に駅 行きの列車が到着し,その列車が時刻 に発車したとすると,駅 行きの次の列車は時刻 に到着し,時刻 に発車する.また,駅 行きの前の列車は時刻 に到着し,時刻 に発車する.駅 行きの列車についても同様である.
- 異なる方向の列車が,同時に同じ単線区間(両端の駅を除く)を走行していてはならない.
输入格式
入力は以下の形式で標準入力から与えられる。
:
输出格式
駅 から駅 までの列車の所要時間と,駅 から駅 までの列車の所要時間の合計の最小値を表す整数を出力せよ. ただし,条件をすべて満たすように列車を走らせることが不可能な場合は, を出力せよ.
题目大意
题目描述
在高桥王国中有一条铁路,这条铁路分为个区间和个站台,区间连接站台和
一列火车经过区间会消耗的时间,每个区间的铁路是双向的或单向的,如果那么区间是单向的,否则它是双向的
现在すぬけ(snuke)君想要设计一个火车时间表,满足以下约定
所有的火车要么从站台到站台,要么从站台到站台
对任意终点为的火车,如果它在时刻离开站台并开往站台,那么它必须在时刻到达站台,对反方向要求相同
对任意终点为的火车,如果它在时刻到达站台并在时刻离开站台,那么一列经过站台的终点为的火车必须在时刻到达站台并在时刻离开站台,对反方向要求相同
在任意时刻不能有两列相向而行的火车在单向区间内互相穿过
现在你要找出一个时间表,使得一列火车从到和从到的时间之和最短,观察样例可以帮助你更好地理解题目
输入格式
:
输出格式
一行一个整数,表示列车上下行最短的开车时间之和,如果不存在合法方案则输出-1
数据规模
要么是1要么是2
所有输入的数都是整数
3 10
4 1
3 1
4 1
26
1 10
10 1
-1
6 4
1 1
1 1
1 1
1 1
1 1
1 1
12
20 987654321
129662684 2
162021979 1
458437539 1
319670097 2
202863355 1
112218745 1
348732033 1
323036578 1
382398703 1
55854389 1
283445191 1
151300613 1
693338042 2
191178308 2
386707193 1
204580036 1
335134457 1
122253639 1
824646518 2
902554792 2
14829091348
提示
制約
- は整数
- または
部分点
- 点分のテストケースでは,すべての区間が単線である.すなわち, が成り立つ.
- 別の 点分のテストケースでは, が成り立つ.
Sample Explanation 1
例えば,下図に示すように列車を走らせると,所要時間の合計が 分になります. ![](https://atcoder.jp/img/agc011/a5c221ce77ab6ee8aee48e75a4e5c969.png) 例えば,赤線で示した列車は,時刻 に駅 を出発し,時刻 に駅 に到着し,時刻 に駅 を出発し,時刻 に駅 に到着します.