#B4367. [语言月赛 202507] 地铁计费

[语言月赛 202507] 地铁计费

题目描述

S 市地铁一号线共有 nn 个车站,这些车站按由起点站到终点站的顺序分别编号为 1n1\sim n

S 市地铁的计费规则如下:

  • 一个收费区是一段包含若干连续车站的子段,整条线路被不重不漏地划分成了若干收费区,即,所有车站都在恰好一个收费区内。
  • 在同一车站进站和出站,收费 11 元。
  • 乘车起点和终点是同一收费区内不同车站的,收费 22 元。
  • 否则,若乘车起点和终点之间包含了 mm 个完整收费区,则收费 2+m2+m 元。具体地,设车程的两个端点车站分别为 a,b (a<b)a,b~(a<b),则满足 alxrxba\le l_x \le r_x \le b 的收费区 xx 的数量即为 mm,其中 lx,rxl_x,r_x 是收费区 xx 的左右端点。

收费区如下定义:

  • 给出 k+1k + 1 个分界点 1=p0<p1<p2<<pk=n+11=p_0 < p_1<p_2<\ldots<p_k=n+1,则第 ii 个收费区包含所有满足 pi1x<pip_{i-1}\le x<p_i 的车站 xx。即收费区 ii 的左右端点分别为 li=pi1l_i=p_{i-1}ri=pi1r_i=p_i-1

你需要回答 qq 次询问,每次询问从车站 ii 到车站 jj 的收费。

输入格式

第一行两个由空格分隔的正整数 n,kn,k

第二行 k+1k+1 个由空格分隔的正整数,表示分界点。第 ii 个输入的正整数表示 pi1p_{i-1}

第三行一行一个整数 qq

接下来 qq 行,每行输入两个正整数 i,ji,j,表示一次询问。

输出格式

对于每组询问,输出一行一个整数表示答案。

10 4
1 3 5 7 11
6
2 2
1 3
1 4
10 1
6 9
3 4
1
3
4
6
2
2
5 5
1 2 3 4 5 6
3
1 1
1 3
2 5
1
5
6
6 2
1 3 7
5
1 3
2 5
5 5
1 6
4 5
3
2
1
4
2

提示

样例 1 解释

按照题目中的定义,我们将线路中的 1010 个车站划分为 k=4k=4 个收费区:

  • 收费区 11:包含车站 1,21,2
  • 收费区 22:包含车站 3,43,4
  • 收费区 33:包含车站 5,65,6
  • 收费区 44:包含车站 7,8,9,107,8,9,10

考虑各个询问:

询问编号 出发站 到达站 车费 解释
11 22 11 同站进出,收费 11
22 11 33 33 1,31,3 两站之间包含收费区 11 中所有车站,收费 2+1=32+1=3
33 44 44 1,41,4 两站之间包含收费区 1,21,2 中所有车站,收费 2+2=42+2=4
44 1010 11 66 1,101,10 两站之间包含收费区 1,2,3,41,2,3,4 中所有车站,收费 2+4=62+4=6
55 66 99 22 6,96,9 两站之间没有包含任何一个收费区中所有的车站,收费 2+0=22+0=2
66 33 44 3,43,4 两站均属收费区 22,收费 22

样例 2 解释

此样例满足 k=nk=n 的限制。

样例 3 解释

此样例满足 k=2k=2 的限制。

数据范围与约定

对于全部数据,满足 $1\le k\le 1000, 1\le n\le 10^9,k\le n,1\le q\le10^5$。各测试点的详细数据范围见下表。

测试点 nn qq 特殊性质
121\sim 2 1000\le 1000 1000\le 1000 A
343\sim 4 B
575\sim 7
8108\sim 10 105\le 10^5
111311\sim 13 105\le 10^5 1000\le 1000
141514\sim 15 109\le 10^9 105\le 10^5 C
162016\sim 20

特殊性质 A:保证 k=nk=n

特殊性质 B:保证 k=2k=2

特殊性质 C:保证 nnkk 的倍数且所有收费区大小相等。