思维2108C · Neo's Escape
Neo 想要逃离矩阵。在他面前有 n 个按钮排成一行。每个按钮有一个整数权重:a_1, a_2, …, a_n。
Neo 无法移动,但他可以创造并移动克隆体。这意味着他可以以任意顺序执行以下两种类型的无限次操作:
· 在某个特定按钮前创造一个克隆体。
· 将已有的克隆体向左或向右移动一个位置。
一旦一个克隆体位于另一个尚未被按下的按钮前——无论它是被创造的还是被移动的——它就会立即按下该按钮。如果按钮已经被按下,克隆体什么也不做——按钮只能被按下一次。
为了逃离,Neo 需要按照权重序列非递增的顺序按下所有按钮——也就是说,如果 b_1, b_2, …, b_n 是按按下顺序排列的按钮权重,那么必须满足 b_1 ≥ b_2 ≥ … ≥ b_n。
你的任务是确定 Neo 为了按有效顺序按下所有按钮所需创造的最少克隆体数量。
输入 / 输出 / 样例(含数据范围)· 不写代码可以跳过
输入
每个测试包含多个测试数据。第一行包含测试数据的数量 t(1 ≤ t ≤ 10^4)。测试数据的描述如下。
每个测试数据的第一行包含一个整数 n(1 ≤ n ≤ 2 · 10^5)——按钮的数量。
每个测试数据的第二行包含 n 个整数 a_1, a_2, …, a_n(1 ≤ a_i ≤ 10^9)——按钮的权重。
保证所有测试数据的 n 之和不超过 2 · 10^5。
输出
对于每个测试数据,输出一个整数——为了按有效顺序按下所有按钮所需创造的最少克隆体数量。
样例
输入
4
5
4 3 2 1 5
3
1 1 1
6
7 8 1 5 9 2
10
1 7 9 7 1 10 2 10 10 7
输出
2
1
2
3
提示
在第一个测试数据中,Neo 可以按如下方式行动:
· 在第五个按钮(权重为 5)前创造一个克隆体。
· 在第一个按钮(权重为 4)前创造一个克隆体。
· 将第二个克隆体从第一个按钮移动到第二个按钮(权重为 3)。
· 将第二个克隆体从第二个按钮移动到第三个按钮(权重为 2)。
· 将第一个克隆体从第五个按钮移动到第四个按钮(权重为 1)。
因此,按钮按下的顺序将是 5 arrow 4 arrow 3 arrow 2 arrow 1,满足要求。可以证明创造的克隆体数量是最少的。在第二个测试数据中,Neo 可以按如下方式行动:
· 在第二个按钮(权重为 1)前创造一个克隆体。
· 将克隆体从第二个按钮移动到第三个按钮(权重为 1)。
· 将克隆体从第三个按钮移动到第二个按钮(已被按下)。
· 将克隆体从第二个按钮移动到第一个按钮(权重为 1)。
因此,按钮按下的顺序将是 1 arrow 1 arrow 1。
提示
难度 1500 · binary search, brute force, data structures
构造649C · Печать условий
有 n 支队伍来参加程序设计竞赛的备赛训练。教练为每支队伍挑选了一套训练题,第 i 支队伍的题目集占用 ai 页。教练手上有 x 张两面都干净的纸,以及 y 张只有一面干净的纸。在第一类纸上打印题目时,可以打印题目集中的两页;而在第二类纸上打印时,只能打印一页。当然,不能在同一张纸上打印两个不同题目集的内容。注意,在使用两面都干净的纸时,不一定要在两面都打印题目,其中一面可以保持空白。
你需要确定教练最多能为多少支队伍完整打印题目集。
输入数据
输入数据的第一行包含三个整数 n、x 和 y(1 ≤ n ≤ 200 000,0 ≤ x, y ≤ 109)——队伍数量、两面都干净的纸张数量,以及只有一面干净的纸张数量。
输入数据的第二行包含一个由 n 个整数组成的序列 a1, a2, ..., an(1 ≤ ai ≤ 10 000),其中第 i 个数等于第 i 支队伍题目集的页数。
输出数据
输出一个整数——教练最多能为多少支队伍完整打印题目集。
样例
输入数据
2 3 5
4 6
输出数据
2
输入数据
2 3 5
4 7
输出数据
2
输入数据
6 3 5
12 11 12 11 12 11
输出数据
1
说明
在第一个测试样例中,可以打印两套题目集。一种可能的答案是:把第一套题目集全部打印在只有一面干净的纸上(此后还剩 3 张两面都干净的纸和 1 张只有一面干净的纸),而第二套题目集打印在 3 张两面都干净的纸上。
在第二个测试样例中,可以打印两套题目集。一种可能的答案是:把第一套题目集打印在 2 张两面都干净的纸上(此后还剩 1 张两面都干净的纸和 5 张只有一面干净的纸),而第二套题目集打印在 1 张两面都干净的纸和 5 张只有一面干净的纸上。因此,教练会使用所有纸张来打印。
在第三个测试样例中,只能打印一套题目集(任意一套 11 页的都可以)。打印 11 页的题目集会耗尽所有纸张。
提示
难度 1500 · constructive algorithms, greedy, sortings