CF2132C2.The Cunning Seller (hard version)

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

这是该问题的困难版本。简单版本与困难版本的区别在于,简单版本要求用最少的交易次数获得最小花费,而困难版本要求在限定的交易次数内获得最小花费。

在狡猾的商贩卖出三只西瓜而不是一只之后,他决定进一步增加利润——也就是说,他买了更多的西瓜。现在他可以用一次交易卖出 3x3^x 个西瓜,售价为 3x+1+x⋅3x−13^{x+1} + x \cdot 3^{x-1} 枚硬币,其中 xx 是非负整数。这样的售卖方式称为一次“交易”。

一位精明的买家来找他,但买家的时间有限,因此最多只能进行 kk 次交易,并且计划恰好购买 nn 个西瓜。

由于买家很着急,因此他请求你帮忙计算:如果最多只能进行 kk 次交易,买下 nn 个西瓜所需支付的最少硬币数是多少。如果无法在不超过 kk 次交易的情况下恰好买到 nn 个西瓜,则输出 −1-1。

输入格式

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试用例的数量。接下来每个测试用例占一行,每行包含两个整数 nn 和 kk(1≤n,k≤1091 \le n, k \le 10^9),分别表示需要购买的西瓜数量和最多允许的交易次数。

输出格式

对于每个测试用例,输出一个整数,表示买下 nn 个西瓜所需支付的最少硬币数。如果无法满足条件,输出 −1-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:11 个西瓜——33 枚硬币。

交易 B:33 个西瓜——1010 枚硬币。

在第一个样例中,唯一的方式是用交易 A 买 11 个西瓜,因此答案是 33。

在第二个样例中,可以用交易 B 买 33 个西瓜,花费 1010 枚硬币,也可以用三次交易 A 买 33 个西瓜,花费 99 枚硬币,因此答案是 99。

在第三个样例中,以下是 33 次交易的所有可能:

33 次交易 A——33 个西瓜。

22 次交易 A 和 11 次交易 B——55 个西瓜。

11 次交易 A 和 22 次交易 B——77 个西瓜。

33 次交易 B——99 个西瓜。

可以看出,无法恰好买到 88 个西瓜。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页