CF1223C Save the Nature
题目描述
你内心是一名环保主义者,但现实很残酷,你只是一家电影院的售票员。不过你仍然可以做点什么!
你有 $n$ 张待售的电影票,第 $i$ 张票的价格为 $p_i$。作为售票员,你可以选择电影票的售出顺序(即对票据进行任意排列)。你知道电影院参与了两个生态修复项目,这两个项目会根据你选择的售票顺序进行:
- 每卖出的第 $a$ 张票(即第 $a$、$2a$、$3a$、……张票),其票价的 $x\%$ 用于可再生能源的研究与推广。
- 每卖出的第 $b$ 张票(即第 $b$、$2b$、$3b$、……张票),其票价的 $y\%$ 用于污染治理。
如果某张票同时属于两个项目,则其票价的 $(x+y)\%$ 用于环保活动。已知所有票价都是 $100$ 的倍数,因此不需要进行任何四舍五入。
例如,若你要售出价格为 $[400, 100, 300, 200]$ 的电影票,电影院对每售出的第 $2$ 张票支付 $10\%$,对每售出的第 $3$ 张票支付 $20\%$,那么将它们按顺序 $[100, 200, 300, 400]$ 售出时,贡献为 $100 \cdot 0 + 200 \cdot 0.1 + 300 \cdot 0.2 + 400 \cdot 0.1 = 120$。但若按顺序 $[100, 300, 400, 200]$ 售出,则贡献为 $100 \cdot 0 + 300 \cdot 0.1 + 400 \cdot 0.2 + 200 \cdot 0.1 = 130$。
大自然等不起,所以你决定重新排列售票顺序,使得在最少售出票数的情况下,总贡献至少达到 $k$。如果无法做到,则输出不可能。换句话说,求最少需要售出多少张票,才能使环保项目的总贡献至少为 $k$。
输入格式
第一行包含一个整数 $q$($1 \le q \le 100$),表示独立询问的数量。每个询问包含 $5$ 行。
每个询问的第一行包含一个整数 $n$($1 \le n \le 2 \times 10^5$),表示电影票的数量。
第二行包含 $n$ 个整数 $p_1, p_2, \dots, p_n$($100 \le p_i \le 10^9$,$p_i \bmod 100 = 0$),表示每张票的价格。
第三行包含两个整数 $x$ 和 $a$($1 \le x \le 100$,$x + y \le 100$,$1 \le a \le n$),表示第一个项目的参数。
第四行包含两个整数 $y$ 和 $b$($1 \le y \le 100$,$x + y \le 100$,$1 \le b \le n$),表示第二个项目的参数。
第五行包含一个整数 $k$($1 \le k \le 10^{14}$),表示所需的总贡献。
保证每个测试的电影票总数不超过 $2 \times 10^5$。
输出格式
输出 $q$ 行,每行一个整数。
对于每个询问,输出为使环保项目总贡献至少为 $k$ 所需售出的最少电影票数(可以任意安排售票顺序)。
如果售出所有电影票也无法达到总贡献 $k$,则输出 $-1$。
说明/提示
在第一个询问中,总贡献为 $50 + 49 = 99 < 100$,因此无法筹集到足够的资金。
在第二个询问中,可以将票据重新排列为 $[100, 100, 200, 200, 100, 200, 100, 100]$,前 $6$ 张票的总贡献为 $100 \cdot 0 + 100 \cdot 0.1 + 200 \cdot 0.15 + 200 \cdot 0.1 + 100 \cdot 0 + 200 \cdot 0.25 = 10 + 30 + 20 + 50 = 110$。
在第三个询问中,每张票的全部票价都用于环保活动。
在第四个询问中,可以将票据重新排列为 $[100, 200, 100, 100, 100]$,前 $4$ 张票的总贡献为 $100 \cdot 0 + 200 \cdot 0.31 + 100 \cdot 0 + 100 \cdot 0.31 = 62 + 31 = 93$。
由 ChatGPT 4.1 翻译