#P6573. [BalticOI 2017] Toll

    ID: 5577 Type: RemoteJudge 1000ms 128MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>动态规划,dp2017线段树矩阵运算O2优化BalticOI

[BalticOI 2017] Toll

题目背景

作为一个合格的货运公司,在送达货物的同时也要让花的钱最少。

题目描述

这座城市有 nn 个地点,这 nn 个地点之间有 mm 条边。
货运公司接到了 oo 个订单,他们要想方设法的让路途中花的钱最少。
对于每条路,都有三个信息:

  • a,ba,b 代表从 aa 连到 bb
  • tt 代表这条路需要多少钱。

并且对于每个订单,都给出 aabb 代表要把物品从 aa 运到 bb ,求每个订单需要花的最少的钱;如果无法送达就输出 1-1
特别的,对于两个编号为 a,ba,b 的路,一定满足:

$$\left\lfloor\dfrac{b}{k}\right\rfloor=1+\left\lfloor\dfrac{a}{k}\right\rfloor $$

kk 是一个给定的常数)。

输入格式

第一行四个整数 k,n,m,ok,n,m,o 代表一个常数,地点的个数,边的个数,订单的个数。
点的编号为从 00n1n - 1
接下来 mm 行每行三个整数 a,b,ta,b,t 代表从 aa 连向 bb 要花费 tt,保证满足 $\left\lfloor\dfrac{b}{k}\right\rfloor=1+\left\lfloor\dfrac{a}{k}\right\rfloor$,并且两点之间连接的边数不超过 11 条边。
接下来 oo 行每行两个整数 a,ba,b 代表要从 aa 运货到 bb

输出格式

对于每个订单,输出一行一个整数表示答案。

5 14 5 5
0 5 9
5 12 10
0 7 7
7 12 8
4 7 10
0 12
0 5
0 7
7 12
0 13
15
9
7
8
-1

提示

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(7 pts):k=1k=1
  • Subtask 2(10 pts):每个订单中的 a=0a=0
  • Subtask 3(8 pts):o100o \le 100
  • Subtask 4(31 pts):o3000o \le 3000
  • Subtask 5(44 pts):无特殊限制。

对于 100%100\% 的数据,1n500001 \le n \le 500001o100001 \le o \le 100001k51 \le k \le 50a<b<n0 \le a < b < n1t100001 \le t \le 10000

说明

翻译自 BOI 2017 D1 T3 Toll。
翻译者:@一只书虫仔
本题强制 O2O2 优化。