CFCF2144D.Price Tags

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

假设你是一家商店的老板。为了新一季到来之前清理库存,你决定举行一次全面大促销。

你的店里有 nn 种不同的商品,第 ii 种商品的售价为 cic_i 个金币。每种商品都贴有价格标签,标签上的价格就是 cic_i。你决定举办一次这样的促销:“我们将所有商品的价格除以 xx。” 形式上,这意味着你选择一个公约数 xx,促销期间,第 ii 件商品的新价格将变为 cix\left\lceil \frac{c_i}{x} \right\rceil 个金币(这里 y\left\lceil y \right\rceil 表示向上取整)。

为了避免顾客混淆,你需要为所有商品重新贴上印有新价格的标签,但打印新标签是有成本的。具体来说,每打印一个价格标签需要花费 yy 个金币。

于是你想到一个妙招——为什么不用现有的标签,在商品之间互换呢?这样只需要为那些没有对应价格标签的商品打印新标签即可。

现在还剩下最后一个问题:你应该将价格缩减多少,也就是应该选择怎样的 xx 呢?系数 xx 必须是一个严格大于 11 的整数,并且要使总收入最大化。总收入等于所有商品的新总价值减去打印标签的总成本。

请你计算最大可能的总收入。

输入格式

第一行包含一个整数 tt1t101 \le t \le 10),表示测试用例的数量。

每个测试用例的第一行包含两个整数 nnyy1n21051 \le n \le 2 \cdot 10^51y1091 \le y \le 10^9),分别表示商品的数量和每个价格标签的打印成本。

第二行包含 nn 个整数 c1,c2,,cnc_1, c_2, \dots, c_n1ci21051 \le c_i \le 2 \cdot 10^5),表示每件商品的原始价格。

输出格式

对于每个测试用例,输出一个整数,表示最大总收入。

输入输出样例

  • 输入#1

    4
    5 51
    50 150 50 148 150
    3 1000000000
    42 42 42
    10 54321
    1 8088 45 1 73 1 9198 4991 1 83
    3 100
    1 1 1

    输出#1

    31
    -2999999937
    -162755
    3

说明/提示

在第一个测试用例中,最优选择 x=3x = 3。此时新价格为 [17,50,17,50,50][17, 50, 17, 50, 50]。可以利用两个现有的 5050 标签,需要为 171717175050 共打印三个新标签。所以总收入为 17+50+17+50+50513=3117 + 50 + 17 + 50 + 50 - 51 \cdot 3 = 31

在第二个测试用例中,最优选择 x=2x = 2,新价格为 [21,21,21][21, 21, 21],需要为 33 个新标签付费。

在第三个测试用例中,最优选择 x=111x = 111

在第四个测试用例中,最优选择 x=2x = 2,新价格与原价完全相同,因此不需要新标签。

首页