ABC297练习笔记

这篇博客记录了几个竞赛题目及其解决方案,涉及到的操作包括:计算gcd的优化方法,使用集合寻找第k小价格的组合,求解最小矩阵面积期望问题,以及在约束条件下进行 Nim 游戏的必胜策略分析。每个问题都通过数学分析和算法设计得到高效解法,复杂度从O(log A)到O(n log kn)不等。
摘要由CSDN通过智能技术生成

D - Count Subtractions

给定两个整数 \(A,B\),重复下列操作直到 \(A=B\)

  • \(A>B\),则令 \(A=A-B\)
  • 否则,令 \(B=B-A\)

求出一共进行多少次操作。 \(1\leq A,B\leq 10^{18}\)

sol.

可以发现和求解 \(\text{gcd}\) 特别像,当 \(A>B\) 时一共需要连续让 \(A\) 减小 \(\lfloor\dfrac{A}{B}\rfloor\) 次变为 \(A\mod B\)。复杂度 \(\mathcal O(\log A)\)

#include<bits/stdc++.h>
using namespace std;
long long a, b, ans;
int main(){
    cin >> a >> b;
    while(a && b){
        if(a > b){
            if(a%b == 0)ans += a/b-1;
            else ans += a/b;
            a %= b;
        }else{
            if(b%a == 0)ans += b/a-1;
            else ans += b/a;
            b %= a;
        }
    }
    cout << ans << endl;
    return 0;
}

E - Kth Takoyaki Set

\(n\) 种商品,第 \(i\) 种商品的价格为 \(a_i\),每种商品都有无限个。求出这些商品能够组合出来的第 \(k\) 小的价格。

\(1\leq n\leq 10,1\leq k\leq 1\times 10^5, 1\leq a_i\leq 10^9\)

sol.

假设已经求出了前 \(k-1\) 小的价格,分别是 \(p_1,...p_{k-1}\),并且设 \(p_0=0\)。那么 \(p_k\) 肯定等于某个 \(p_i(i\in [0,k-1])\) 加上某个 \(a_j\),并且这个组合没有作为前 \(k-1\) 小的价格。用 \(\text{set}\) 维护可能的价格的集合,集合大小为 \(\mathcal O(kn)\),复杂度就是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值