CFCF2144D.Price Tags
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
假设你是一家商店的老板。为了新一季到来之前清理库存,你决定举行一次全面大促销。
你的店里有 n 种不同的商品,第 i 种商品的售价为 ci 个金币。每种商品都贴有价格标签,标签上的价格就是 ci。你决定举办一次这样的促销:“我们将所有商品的价格除以 x。” 形式上,这意味着你选择一个公约数 x,促销期间,第 i 件商品的新价格将变为 ⌈xci⌉ 个金币(这里 ⌈y⌉ 表示向上取整)。
为了避免顾客混淆,你需要为所有商品重新贴上印有新价格的标签,但打印新标签是有成本的。具体来说,每打印一个价格标签需要花费 y 个金币。
于是你想到一个妙招——为什么不用现有的标签,在商品之间互换呢?这样只需要为那些没有对应价格标签的商品打印新标签即可。
现在还剩下最后一个问题:你应该将价格缩减多少,也就是应该选择怎样的 x 呢?系数 x 必须是一个严格大于 1 的整数,并且要使总收入最大化。总收入等于所有商品的新总价值减去打印标签的总成本。
请你计算最大可能的总收入。
输入格式
第一行包含一个整数 t(1≤t≤10),表示测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 y(1≤n≤2⋅105;1≤y≤109),分别表示商品的数量和每个价格标签的打印成本。
第二行包含 n 个整数 c1,c2,…,cn(1≤ci≤2⋅105),表示每件商品的原始价格。
输出格式
对于每个测试用例,输出一个整数,表示最大总收入。
输入输出样例
输入#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=3。此时新价格为 [17,50,17,50,50]。可以利用两个现有的 50 标签,需要为 17、17 和 50 共打印三个新标签。所以总收入为 17+50+17+50+50−51⋅3=31。
在第二个测试用例中,最优选择 x=2,新价格为 [21,21,21],需要为 3 个新标签付费。
在第三个测试用例中,最优选择 x=111。
在第四个测试用例中,最优选择 x=2,新价格与原价完全相同,因此不需要新标签。