#D. 最短路径

    Type: Default File IO: path 4000ms 512MiB

最短路径

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

最短路径(path\texttt{path}

【题目描述】

小 D 有一张 n+1n+1 个点的图,点的标号为 0n0\sim n,对于所有 1in1\le i\le n,有一条 i1ii-1\to i 的有向边,初始该边边权为 aia_i

小 D 会进行 qq 次实验,每次实验为如下两种形式之一:

  • 修改实验:将 x1xx-1\to x 的有向边边权增加 ww

  • 查询实验:小 D 会选定一个范围 [l,r][l,r],然后仅保留编号在这个范围内的点。

    他想选定一条路径,其起点和终点 s,ts,t 满足 lstrl\le s\le t\le r,使得 sts\to t 的距离最短。

    但小 C 还有进一步的要求,他想知道这个区间内前 kk 短的路径长度,两条路径不同当且仅当 sstt 不同。

【输入格式】

path.in\texttt{path.in} 中读入数据。

第一行两个整数 n,qn,q

第二行 nn 个整数 a1ana_1\sim a_n

接下来 qq 行,每行表示一个操作:

  • 如果该实验是修改实验,输入 1 x w1\ x\ w
  • 如果该实验是查询实验,输入 2 l r k2\ l\ r\ k

【输出格式】

输出到 path.out\texttt{path.out} 中。

对于每次操作二,输出 kk 行,第 ii 行一个整数表示当前范围内第 ii 短的路径长度。

【样例 1 输入】

6 6
1 0 3 1 -4 3
2 4 6 3
2 1 6 2
1 1 -2
1 5 2
1 4 1
2 0 3 3

【样例 1 输出】

-4
-1
0
-4
-3
-1
-1
0

【样例 1 解释】

对于第一次查询实验,前 33 短路径是 45,46,444\to 5,4\to 6,4\to 4

对于第二次查询实验,前 22 短路径是 45,354\to 5,3\to 5

对于第三次查询实验,前 33 短路径是 01,02,000\to 1,0\to 2,0\to 0

【样例 2】

见下发文件中的 path2.in\texttt{path2.in}path2.ans\texttt{path2.ans}

该样例满足子任务 33 的限制。

【样例 3】

见下发文件中的 path3.in\texttt{path3.in}path3.ans\texttt{path3.ans}

该样例满足子任务 44 的限制。

【样例 4】

见下发文件中的 path4.in\texttt{path4.in}path4.ans\texttt{path4.ans}

该样例满足子任务 55 的限制。

【样例 5】

见下发文件中的 path5.in\texttt{path5.in}path5.ans\texttt{path5.ans}

该样例满足子任务 66 的限制。

【数据范围】

对于所有的测试数据有:$1\le n,q,k,\sum k\le 2\times 10^5,0\le l\le r\le n,-10^6\le a_i,w\le 10^6$。

保证每次询问时给定范围内至少存在 kk 条不同的路径。

子任务编号 分值 特殊限制
11 1010 n,q100n,q\le 100
22 2525 n,q,k1000n,q,\sum k\le 1000
33 n,q1000n,q\le 1000
44 1515 k=1k=1
55 1010 没有修改实验
66 1515 无特殊限制

NOIP 训练赛(七)HARD

Not Attended
Status
Done
Rule
OI
Problem
4
Start at
2024-8-20 7:45
End at
2024-8-20 12:15
Duration
4.5 hour(s)
Host
Partic.
26