#CF1971E. Find the Car

    ID: 6896 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>二分数学排序CodeforcesCodeforces Round 944(Div4)Div4ECF1971E1500

Find the Car

题目描述

Timur 正在一辆车上,沿着数轴从 00 点行驶到 nn 点。汽车从 00 点在第 00 分钟开始出发。

数轴上有 k+1k+1 个标志牌,分别位于 0,a1,a2,,ak0, a_1, a_2, \dots, a_k 处,Timur 知道汽车分别会在第 0,b1,b2,,bk0, b_1, b_2, \dots, b_k 分钟到达这些位置。序列 aabb 都是严格递增的,且 ak=na_k = n

在任意两个相邻的标志牌之间,汽车都以恒定速度行驶。Timur 有 qq 个询问:每个询问给定一个整数 dd,Timur 想让你输出汽车到达 dd 点所需的分钟数,向下取整。

输入格式

第一行包含一个整数 tt1t1041 \leq t \leq 10^4),表示测试用例的数量。

每个测试用例的第一行包含三个整数 nnkkqqkn109k \leq n \leq 10^91k,q1051 \leq k, q \leq 10^5),分别表示终点位置、Timur 已知时间的点的数量和询问的数量。

每个测试用例的第二行包含 kk 个整数 aia_i1ain1 \leq a_i \leq n;对于每个 1ik11 \leq i \leq k-1,有 ai<ai+1a_i < a_{i+1}ak=na_k = n)。

每个测试用例的第三行包含 kk 个整数 bib_i1bi1091 \leq b_i \leq 10^9;对于每个 1ik11 \leq i \leq k-1,有 bi<bi+1b_i < b_{i+1})。

接下来的 qq 行,每行包含一个整数 dd0dn0 \leq d \leq n),表示 Timur 询问的距离。

所有测试用例中 kk 的总和不超过 10510^5,所有测试用例中 qq 的总和不超过 10510^5

输出格式

对于每个询问,输出一个整数,表示汽车到达 dd 点所需的分钟数,向下取整。

样例

4
10 1 3
10
10
0
6
7
10 2 4
4 10
4 7
6
4
2
7
1000000000 1 1
1000000000
1000000000
99999999
6 1 3
6
5
2
6
5
0 6 7 
5 4 2 5 
99999999 
1 5 4

样例说明

对于第一个测试用例,汽车从 00 点到 1010 点共用 1010 分钟,因此速度为每分钟 11 单位:

  • 00 点,时间为 00 分钟。
  • 66 点,时间为 66 分钟。
  • 77 点,时间为 77 分钟。

对于第二个测试用例,0044 点速度为每分钟 11 单位,441010 点速度为每分钟 22 单位:

  • 66 点,时间为 55 分钟。
  • 44 点,时间为 44 分钟。
  • 22 点,时间为 22 分钟。
  • 77 点,时间为 5.55.5 分钟,答案为 55

对于第四个测试用例,汽车速度为每分钟 1.21.2 单位,因此各询问的答案为:

  • 22 点,时间为 1.661.66\dots 分钟,答案为 11
  • 66 点,时间为 55 分钟。
  • 55 点,时间为 4.164.16\dots 分钟,答案为 44

由 ChatGPT 4.1 翻译

来源

Codeforces 1971E,英文题名 Find the Car。