#P15640. [ICPC 2022 Tehran R] Simplification

[ICPC 2022 Tehran R] Simplification

题目描述

Amin 会时不时地记录他的股票价格,作为一个数据点 (ti,pi)(t_{i}, p_{i}) 记在笔记本上,其中 pip_{i} 是股票在第 tit_{i} 天的价格。这些数据点构成的序列代表了一个分段线性函数 FF,展示了一段时间内的价格历史。实际上,FF 通过直线段连接每一对连续的点。如果某一天 tt 没有记录价格,则可以用 F(t)F(t) 作为估计值。

由于他长期跟踪股票价格,收集的数据变得越来越大。因此,他决定通过丢弃一些已记录的数据点来缩减数据,并用剩余的点构造一个新的分段线性函数 F′F'。F′F' 被称为 FF 的一个 “简化”。Amin 希望以这样一种方式创建简化,使得 F′F' 是 FF 的一个良好近似。为此,他定义了一个误差度量如下。

设 FF 定义在一个严格递增的天数序列 L=⟨t1,…,tn⟩L = \langle t_{1}, \ldots, t_{n} \rangle 上,而 F′F' 定义在 LL 的一个子序列 L′=⟨t1′,…,tm′⟩L' = \langle t'_{1}, \ldots, t'_{m} \rangle 上,其中 t1′=t1t'_{1} = t_{1},tm′=tnt'_{m} = t_{n},并且对于 1≤i≤m1 \leq i \leq m 有 F′(ti′)=F(ti′)F'(t'_{i}) = F(t'_{i})。(我们称 mm 为 F′F' 的大小。)F′F' 的误差定义为所有 1≤k≤n1 \leq k \leq n 中 ∣F′(tk)−F(tk)∣|F'(t_{k}) - F(t_{k})| 的最大值。例如,在下图中,我们有 66 个数据点,标记为 11 到 66,其坐标与第二个样例输入中给出的相同,而 F′F' 是一个大小为 33 的简化,包含数据点 11、44 和 66。在此图中,FF 用实线描绘,F′F' 用虚线描绘。F′F' 的误差度量由点 22 到 F′F' 的垂直距离体现。

:::align{center} :::

Amin 的目标是在 F′F' 的误差不超过给定值 δ\delta 的前提下,最小化 F′F' 的大小。

输入格式

输入的第一行包含一个正整数 nn(2⩽n⩽20002 \leqslant n \leqslant 2000),表示 FF 的大小。接下来的 nn 行,每行包含两个整数 tit_{i}, pip_{i}(1⩽ti,pi⩽1061 \leqslant t_{i}, p_{i} \leqslant 10^{6}),其中 pip_{i} 是股票在第 tit_{i} 天的价格。最后一行包含误差限制 δ\delta,它是一个不超过 10610^{6} 的非负整数。

输出格式

在输出中,打印 F′F' 的最小可能大小。

3
1 10
3 100
10 20
90
2
6
10 10
20 20
35 14
50 20
60 10
70 10
8
3

提示

翻译由 DeepSeek V3.2 完成