P1016无终奇语fable

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签双指针 · 单调队列

【题目背景】

Nymph 是虚构史学家。然而 Nymph 不是虚构史学家。

在魂灵熔炉构筑的幻境中,尚未发生的故事也能够被讲述,甚至成为仿佛真实存在的历史。Nymph 曾经向死魂灵们讲述卡兹戴尔未来的种种可能,而这一次,故事的主角变成了来自 Gioush 大队的 tfbz。

【题目描述】

事实上,tfbz 是一位一往无前的战士,他现在面对着萨卡兹中的险路恶敌——老教师。

作为巫妖的领袖,老教师为 tfbz 准备了一场属于他的“紧急授课”。在 tfbz 与老教师之间,所有士兵从左到右排成了一列,并按照顺序用 1n1\sim n 标号。只有从这些士兵之间开辟出一条道路,他才能真正来到老教师的身前。

然而老教师身前有 nn 个士兵,每个士兵有其血量 hih_i,tfbz 必须要先打败这些士兵后才能挑战老教师。作为一名战士,他拥有着自己的招牌技能——“必须开辟的道路!”。使用必须开辟的道路时,可以选择一串士兵,编号为 lrl\sim r,直接将其中的所有士兵斩杀。然而这个技能太过强大,老教师对其施以限制,于是,tfbz 选择的士兵数目不能超过 kk

在整场战斗中,tfbz 只会使用一次“必须开辟的道路!”。被这个技能斩杀的士兵自然也视为被 tfbz 攻击过,但是斩杀他们不会计入 tfbz 接下来造成的伤害。

然而仅仅使用这个技能不足以让其有挑战老教师的资格,于是 tfbz 还打算略微展示他的力量,他精心计算出了一个值 cc,表示他还将造成不超过 cc 点的伤害。他希望所有被他造成过伤害的士兵都是相邻的。也就是说,存在一个区间 [l,r][l,r],满足,对于任意 i[l,r]i\in[l,r],都成立 ii 号士兵被 tfbz 攻击过,且任意 i[l,r]i\notin[l,r] 都没有被 tfbz 攻击过。(只要受到伤害就视为被攻击)

对于没有被“必须开辟的道路!”斩杀,但又位于上述区间中的士兵,tfbz 必须对其造成恰好等于其血量的伤害,从而将其击败。也就是说,假设 tfbz 使用技能斩杀的士兵区间为 [x,y][x,y],那么必须满足 [x,y][l,r][x,y]\subseteq[l,r]yx+1ky-x+1\leq k,且 i=lrhii=xyhic\sum_{i=l}^{r}h_i-\sum_{i=x}^{y}h_i\leq c

特别地,tfbz 可以不对技能范围外的士兵造成伤害。此时,他攻击过的士兵就只有被“必须开辟的道路!”斩杀的连续一段士兵。

现在,tfbz 希望他攻击到的士兵数量尽可能多,也就是上述存在的 [l,r][l,r] 满足 rl+1r-l+1 最大,你需要求出这个长度 rl+1r-l+1

【输入格式】

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

第一行三个整数 n,k,cn,k,c,分别表示士兵的数量、“必须开辟的道路!”至多能够斩杀的士兵数量以及 tfbz 还会造成的伤害上限。

第二行 nn 个正整数 h1,h2,,hnh_1,h_2,\ldots,h_n,表示每名士兵的血量。

【输出格式】

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

输出一行一个整数,表示 tfbz 最多能够攻击到的士兵数量。

【样例 1 输入】

8 3 94 2 7 3 6 1 5 8

【样例 1 输出】

6

【说明/提示】

【样例 1 解释】

tfbz 可以攻击编号为 161\sim 6 的士兵,并使用“必须开辟的道路!”斩杀编号为 353\sim 5 的士兵。此时,他还需要造成的伤害为 4+2+1=74+2+1=7,没有超过 99

可以证明,tfbz 不可能攻击到连续的 77 名士兵,因此答案为 66

【样例 2】

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

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

【样例 3】

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

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

【样例 4】

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

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

【样例 5】

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

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

【样例 6】

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

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

【数据范围】

对于 100%100\% 的数据,保证:1kn2×1051\leq k\leq n\leq 2\times 10^50c10180\leq c\leq 10^{18}1hi1091\leq h_i\leq 10^9

测试点编号nn特殊性质
131\sim 320\leq 20
474\sim 72000\leq 2000
8118\sim 112×105\leq 2\times 10^5A
121512\sim 152×105\leq 2\times 10^5B
162016\sim 202×105\leq 2\times 10^5

特殊性质 A:保证 k=1k=1

特殊性质 B:保证 h1h2hnh_1\leq h_2\leq\cdots\leq h_n

【题解】

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

查看题解