P1074云间飞渡flight

时间限制 4000 ms内存限制 512 MiB通过率 —
显示算法标签动态规划 · 单调队列 · 离线算法

【题目背景】

海图完成拼合后,船队顺利返回晨汐港。为了尽快把遗迹记录送往内陆,tfbz 选择了一条穿过云海的旧航路,并准备借助沿途高台完成一场飞渡。

【题目描述】

云海中有 nn 座高台,从起点到星门依次编号为 1n1\sim n,第 ii 座高台的高度为 hih_i。tfbz 最初位于第 11 座高台,需要到达第 nn 座高台。

一次飞渡可以从第 jj 座高台到达第 ii 座高台,其中 j<ij<i。若 hjhih_j\leq h_i,这次飞渡需要逆着上升气流前进,产生 11疲劳。若 hj>hih_j>h_i,则可以顺着气流下降,不会产生疲劳

航路记录中共有 qq 种风况。第 xx 种风况给出一个整数 kxk_x,在这种风况下,每次飞渡都必须满足 ijkxi-j\leq k_x

每种风况相互独立。对于每种风况,请你求出 tfbz 从第 11 座高台到达第 nn 座高台所需的最少疲劳

形式化题意:给定长度为 nn 的序列 {h}\{h\}qq 个整数 kxk_x,对于每个 kxk_x,求

min{r=1s[hpr1hpr] | 1=p0<p1<<ps=n, prpr1kx (1rs)},\min\left\{\sum_{r=1}^{s}[h_{p_{r-1}}\leq h_{p_r}]\ \middle|\ 1=p_0<p_1<\cdots<p_s=n,\ p_r-p_{r-1}\leq k_x\ (1\leq r\leq s)\right\},

其中 [][\cdot] 为 Iverson 括号。

【输入格式】

从文件 flight.in\textbf{\textit{flight.in}} 中读入数据。

本题包含多组测试数据。

输入的第一行包含一个非负整数 cc 与一个正整数 TT,分别表示测试点编号与测试数据的组数。c=0c=0 表示该测试点为样例。

对于每组测试数据:

第一行包含一个正整数 nn,表示高台数量。

第二行包含 nn 个正整数 h1,h2,,hnh_1,h_2,\ldots,h_n,表示各座高台的高度。

第三行包含一个正整数 qq,表示风况数量。

接下来 qq 行,第 xx 行包含一个正整数 kxk_x,表示第 xx 种风况下单次飞渡能够跨过的最大编号距离。

【输出格式】

输出到文件 flight.out\textbf{\textit{flight.out}} 中。

对于每组测试数据输出 qq 行,第 xx 行一个整数,表示第 xx 种风况下能够得到的最少疲劳

【样例 1 输入】

0 254 2 5 1 3312441 1 1 1223

【样例 1 输出】

21021

【说明/提示】

【样例 1 解释】

在第一组测试数据的第二种风况中,可以依次经过第 1,3,51,3,5 座高台,也可以依次经过第 1,2,4,51,2,4,5 座高台,两种路线都只产生 11疲劳

kx=4k_x=4 时,可以从第 11 座高台直接到达第 55 座高台。由于 h1>h5h_1>h_5,不会产生疲劳

【样例 2】

见选手目录下的 flight/flight2.in\textbf{\textit{flight/flight2.in}}flight/flight2.ans\textbf{\textit{flight/flight2.ans}}

该组样例符合测试点 131\sim 3 的数据范围。

【样例 3】

见选手目录下的 flight/flight3.in\textbf{\textit{flight/flight3.in}}flight/flight3.ans\textbf{\textit{flight/flight3.ans}}

该组样例符合测试点 484\sim 8 的数据范围。

【样例 4】

见选手目录下的 flight/flight4.in\textbf{\textit{flight/flight4.in}}flight/flight4.ans\textbf{\textit{flight/flight4.ans}}

该组样例符合测试点 9119\sim 11 的数据范围。

【样例 5】

见选手目录下的 flight/flight5.in\textbf{\textit{flight/flight5.in}}flight/flight5.ans\textbf{\textit{flight/flight5.ans}}

该组样例符合测试点 121512\sim 15 的数据范围。

【样例 6】

见选手目录下的 flight/flight6.in\textbf{\textit{flight/flight6.in}}flight/flight6.ans\textbf{\textit{flight/flight6.ans}}

该组样例符合测试点 162016\sim 20 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证 1T101\leq T\leq 102n1062\leq n\leq 10^61q251\leq q\leq 251hi1091\leq h_i\leq 10^91kx<n1\leq k_x<n。对于同一个测试点,保证 nq2.5×107\sum nq\leq 2.5\times 10^7

测试点编号nnqq特殊性质
131\sim 3200\leq 2005\leq 5
484\sim 8106\leq 10^625\leq 25
9119\sim 112×105\leq 2\times 10^5=1=1
121512\sim 152×105\leq 2\times 10^510\leq 10
162016\sim 20106\leq 10^625\leq 25

特殊性质:对于同一个测试点,保证所有测试数据的 nx=1qkxn\sum_{x=1}^{q}k_x 之和不超过 2×1072\times 10^7

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解