编程题
### 问题描述 小齐是一位热衷于参加马拉松的跑步者,她喜欢为她的同伴设计马拉松路线。她最近设计了一条由 $N$ 个检查点组成的路线,参赛者必须按照指定的顺序依次访问这些检查点。 不幸的是,小齐意识到其他的奶牛可能没有足够的体力来跑完整条路线。因此,她想知道在跑不同的子路线时需要多长时间,其中子路线是从完整路线中取出的连续子序列。为了让问题更加复杂,小齐知道其他懒惰的奶牛可能选择在跑子路线时跳过一个检查点,选择跳过哪个检查点取决于跑这段子路线时总旅行时间最小。但不能跳过子路线的起点和终点。 为了构建最佳的马拉松课程,小齐想调查更改她当前路线上的检查点位置将如何影响跑不同子路线的所需时间。请帮助她确定对检查点位置的某些更改将如何影响奶牛在不同子路线上跑步所需的时间(考虑到奶牛可能选择跳过一个检查点)。 由于比赛路线设置在一个街区网格中,两个检查点之间的距离由 $(x_1, y_1)$ 和 $(x_2, y_2)$ 给出,距离计算公式为 $|x_1-x_2| + |y_1-y_2|$。 ### 输入格式 第 $1$ 行:两个整数 $N$ 和 $Q$。 接下来的 $N$ 行包含路线上 $N$ 个检查点的坐标 $(x, y)$,表示它们必须按顺序访问的位置。所有坐标都在范围 $-1000$ 到 $1000$ 之间。 接下来的 $Q$ 行包含更新和查询,每行一个,按给定的顺序处理。行的形式为 $U I X Y$ 或 $Q I J$。形式为 $U I X Y$ 的行表示检查点 $I$ 的位置将更改为 $(X, Y)$。形式为“Q I J”的行询问从检查点 $I$ 到检查点 $J$($I \leq J$)的子路线的最小旅行时间,假设奶牛选择在这条子路线上跳过一个检查点(但不跳过端点 $I$ 和 $J$)。 ### 输出格式 对于每个子路线长度的查询请求,输出一行所需的长度。 ### 样例输入 ``` 5 5 -4 4 -5 -3 -1 5 -3 4 0 5 Q 1 5 U 4 0 1 U 4 -1 1 Q 2 4 Q 1 4 ``` ### 样例输出 ``` 11 8 8 ``` ### 评测数据规模 $1 \leq N \leq 100,000$,$1 \leq Q \leq 100,000$,$1 \leq I \leq N$。
查看答案
赣ICP备20007335号-2