P1049糖果店(candy)

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签贪心 · 排序 · 前缀和

【题目描述】

小 X 的糖果店中有 nn 颗糖果,其中第 ii 颗糖果的价格为 aia_i 元。小 R 带着 mm 元来到糖果店,可以任意选择若干颗糖果购买。

为了让顾客能够一次品尝两种口味,小 X 准备了至多 kk 个双糖礼盒。每个双糖礼盒必须装入两颗已经购买且没有装入其他双糖礼盒的糖果。装入同一个双糖礼盒的两颗糖果不再分别结算,这个双糖礼盒的价格等于其中较贵糖果的价格。没有装入双糖礼盒的糖果仍按原价结算。

小 R 希望购买的糖果尽可能多,同时支付的总费用不能超过 mm 元。

你需要求出小 R 最多能够购买多少颗糖果。

【输入格式】

本题包含多组测试数据。

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

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

接下来依次输入每组测试数据。对于每组测试数据:

第一行包含三个非负整数 n,m,kn,m,k,分别表示糖果数量、小 R 拥有的钱数与最多能够使用的双糖礼盒数量。

第二行包含 nn 个正整数 a1,a2,…,ana_1,a_2,\ldots,a_n,其中 aia_i 表示第 ii 颗糖果的价格。

【输出格式】

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

对于每组测试数据,输出一行一个非负整数,表示小 R 最多能够购买的糖果数量。

【样例 1 输入】

0 25 11 12 4 7 3 66 16 28 5 6 3 4 9

【样例 1 输出】

45

【说明/提示】

【样例 1 解释】

对于第一组测试数据,小 R 可以购买价格分别为 2,3,4,62,3,4,6 元的四颗糖果,并将价格为 4,64,6 元的两颗糖果装入一个双糖礼盒。总费用为 2+3+6=112+3+6=11 元。

可以证明,购买五颗糖果至少需要 1616 元,因此答案为 44。

对于第二组测试数据,小 R 可以购买价格分别为 3,4,5,6,83,4,5,6,8 元的五颗糖果,将价格为 4,54,5 元与价格为 6,86,8 元的糖果分别装入两个双糖礼盒,并单独购买价格为 33 元的糖果。总费用为 3+5+8=163+5+8=16 元。

可以证明,购买六颗糖果至少需要 2020 元,因此答案为 55。

【样例 2】

见选手目录下的 candy/candy2.in\textbf{\textit{candy/candy2.in}} 和 candy/candy2.ans\textbf{\textit{candy/candy2.ans}}。

该附加样例满足测试点 1∼31\sim 3 的数据范围。

【样例 3】

见选手目录下的 candy/candy3.in\textbf{\textit{candy/candy3.in}} 和 candy/candy3.ans\textbf{\textit{candy/candy3.ans}}。

该附加样例满足测试点 4∼64\sim 6 的数据范围。

【样例 4】

见选手目录下的 candy/candy4.in\textbf{\textit{candy/candy4.in}} 和 candy/candy4.ans\textbf{\textit{candy/candy4.ans}}。

该附加样例满足测试点 10∼1510\sim 15 的数据范围。

【样例 5】

见选手目录下的 candy/candy5.in\textbf{\textit{candy/candy5.in}} 和 candy/candy5.ans\textbf{\textit{candy/candy5.ans}}。

该附加样例满足测试点 16∼2016\sim 20 的数据范围。

【数据范围】

设 NN 为单个测试点内所有测试数据的 nn 之和。

测试点编号n≤n\leq特殊性质
1∼31\sim 31010无
4∼64\sim 62×1052\times 10^5k=0k=0
7∼97\sim 92×1052\times 10^5k≤1k\leq 1
10∼1510\sim 152×1032\times 10^3无
16∼2016\sim 202×1052\times 10^5无

对于所有测试数据,保证:

  • 0≤c≤200\leq c\leq20,1≤T≤2×1041\leq T\leq2\times10^4。
  • 1≤n≤2×1051\leq n\leq2\times10^5,N≤5×105N\leq5\times10^5。
  • 0≤k≤⌊n/2⌋0\leq k\leq\lfloor n/2\rfloor。
  • 0≤m≤10180\leq m\leq10^{18}。
  • 对于所有 1≤i≤n1\leq i\leq n,均有 1≤ai≤1091\leq a_i\leq10^9。

【题解】

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

查看题解