CF2132C2.The Cunning Seller (hard version)
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是该问题的困难版本。简单版本与困难版本的区别在于,简单版本要求用最少的交易次数获得最小花费,而困难版本要求在限定的交易次数内获得最小花费。
在狡猾的商贩卖出三只西瓜而不是一只之后,他决定进一步增加利润——也就是说,他买了更多的西瓜。现在他可以用一次交易卖出 3x 个西瓜,售价为 3x+1+x⋅3x−1 枚硬币,其中 x 是非负整数。这样的售卖方式称为一次“交易”。
一位精明的买家来找他,但买家的时间有限,因此最多只能进行 k 次交易,并且计划恰好购买 n 个西瓜。
由于买家很着急,因此他请求你帮忙计算:如果最多只能进行 k 次交易,买下 n 个西瓜所需支付的最少硬币数是多少。如果无法在不超过 k 次交易的情况下恰好买到 n 个西瓜,则输出 −1。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。接下来每个测试用例占一行,每行包含两个整数 n 和 k(1≤n,k≤109),分别表示需要购买的西瓜数量和最多允许的交易次数。
输出格式
对于每个测试用例,输出一个整数,表示买下 n 个西瓜所需支付的最少硬币数。如果无法满足条件,输出 −1。
输入输出样例
输入#1
8 1 1 3 3 8 3 2 4 10 10 20 14 3 2 9 1
输出#1
3 9 -1 6 30 63 10 33
说明/提示
注意,没有必要购买多于所需数量的西瓜,因此我们不会考虑那些买的西瓜数量超过需求的交易。
我们来看前两种交易方式的花费:
交易 A:1 个西瓜——3 枚硬币。
交易 B:3 个西瓜——10 枚硬币。
在第一个样例中,唯一的方式是用交易 A 买 1 个西瓜,因此答案是 3。
在第二个样例中,可以用交易 B 买 3 个西瓜,花费 10 枚硬币,也可以用三次交易 A 买 3 个西瓜,花费 9 枚硬币,因此答案是 9。
在第三个样例中,以下是 3 次交易的所有可能:
3 次交易 A——3 个西瓜。
2 次交易 A 和 1 次交易 B——5 个西瓜。
1 次交易 A 和 2 次交易 B——7 个西瓜。
3 次交易 B——9 个西瓜。
可以看出,无法恰好买到 8 个西瓜。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?