02 2022 档案
摘要:定义 如果一个线性同余方程 \(ax\equiv 1\pmod b\) ,则称 \(x\) 为 \(a\bmod b\) 的逆元,记作 \(a^{-1}\) 它等价于 \(ax+by=1\) ,根据线性同余方程有解的条件可得 \(\gcd(a,b)\mid 1\) ,所以当且仅当 \(\gcd(a,
阅读全文
摘要:快速幂 简介 快速幂(Binary Exponentiation),是一个在 \(O(\log b)\) 的时间内计算 \(a^b\) 的小技巧,而暴力计算复杂度则为 \(O(n)\) 设 \(b\) 在二进制下表示为: \[ b=c_{k-1}2^{k-1}+c_{k-2}2^{k-2}+\cdo
阅读全文
摘要:题目 AcWing 220 给定整数 \(N\) ,求 \(1\leq x,y\leq N\leq 10^7\) 且 \(\gcd(x,y)\) 为素数的 \((x,y)\) 有多少对 分析 用朴素的算法求解显然复杂度为 \(O(N^2\log^2 N)\) ,所以考虑变形: \[ \begin{a
阅读全文
摘要:前置知识 Mex运算 设 \(S\) 表示一个非负整数集合,定义 \(\operatorname{mex}(S)\) 为求出不属于集合 \(S\) 的最小非负整数运算 公平组合游戏 若一个游戏满足: 两名玩家交替行动 在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关 不能行动的玩家判负 则
阅读全文
摘要:简介 本文介绍了博弈论中的七种基础组合游戏,并给出了证明,如有错误之处欢迎指正 Nim博弈 定义 Nim博弈的定义是: 给定 \(n\) 堆物品,第 \(i\) 堆物品有 \(A_i\) 个,两人轮流取,每次可以任选一堆取走任意多个物品,可以取光但不能不取,最后把物品全部取完者胜利 判断先手是否有必
阅读全文
摘要:简介 Staircase-Nim博弈是Nim博弈的变形,它的定义是: 给定 \(n\) 堆物品,第 \(i\) 堆物品有 \(A_i\) 个,两人轮流取,每次可以从第 \(k\) 堆中取任意多个物品放到第 \(k-1\) 堆中,第 \(1\) 堆物品可以放到第 \(0\) 堆中,最后无法操作者失败
阅读全文
摘要:简介 Anti-Nim博弈是Nim博弈的变形,它的定义是: 给定 \(n\) 堆物品,第 \(i\) 堆物品有 \(A_i\) 个,两人轮流取,每次可以任选一堆取走任意多个物品,可以取光但不能不取,最后把物品全部取完者失败 判断先手是否有必胜策略 推理 先手必胜当且仅当: 每堆的物品数都为 \(1\
阅读全文
摘要:简介 Nimk博弈是Nim博弈的变形,它的定义是: 给定 \(n\) 堆物品,第 \(i\) 堆物品有 \(A_i\) 个,两人轮流取,每次可以从不超过 \(k\) 堆的物品里取走任意多个物品,可以取光但不能不取,最后把物品全部取完者胜利 判断先手是否有必胜策略 推理 Nim博弈实际上就是 \(k=
阅读全文
摘要:简介 Nim博弈的定义是: 给定 \(n\) 堆物品,第 \(i\) 堆物品有 \(A_i\) 个,两人轮流取,每次可以任选一堆取走任意多个物品,可以取光但不能不取,最后把物品全部取完者胜利 判断先手是否有必胜策略 推理 证明:当 \(A_1\oplus A_2\oplus\cdots\oplus
阅读全文
摘要:简介 Bash博弈的定义是: 有一堆物品,两人轮流取,每次可以取 \(1\) 到 \(m\) 个物品,最后把物品全部取完者胜利 现在给出初始的物品数 \(n\) 和 \(m\) ,判断先手是否有必胜策略 推理 \(m+1\mid n\) 时必败 Bash博弈的证明十分简单,用归纳法: \(n\leq
阅读全文
摘要:简介 Fibonacci博弈的定义是: 有一堆物品,两人轮流取,先手第一次可以取任意个但不能全部取完。之后每次取的数量必须大于等于 \(1\) 且小于等于上次取的数量的两倍,最后把物品全部取完者胜利 现在给出初始的物品数 \(n\) ,判断先手是否有必胜策略 推理 设 \(f(i)\) 表示斐波那契
阅读全文
摘要:简介 Wythoff博弈的定义是: 有两堆若干个物品,两人轮流从某一堆物品中取至少一个或同时从两堆中取相同数量的物品,不能不取,最后把物品全部取完者胜利 现在给出两堆物品的数量 \(n,m\) 判断先手是否有策略必胜 推理 我们用 \((a,b)\) 表示第一堆数量为 \(a\) ,第二堆数量为 \
阅读全文
摘要:题目链接:link E.真假签到题 题目 小红拿到了一份代码: long long f(long long x) { if(x == 1) return 1; return f(x / 2) + f(x / 2 + x % 2); } 给定一个正整数 \(x\) ,求 \(f(x)\) 分析 猜想
阅读全文
摘要:简介 本模板实现了高精度加/减/乘/除(单精度)/小于/输入输出,可满足大部分使用需求,并具有较好的拓展性实现取模/双精度除法等 输入/输出 bint a, b; cin >> a >> b; cout << a << b << endl; 加法 A+B Problem bint a, b; cin
阅读全文
摘要:简介 平面最近点对问题即求一个平面上的 \(n\) 个点中距离最短的一对点,朴素的做法是双重循环枚举每一对点,时间复杂度为 \(O(n^2)\) ,利用归并排序的分治思想,可以将复杂度降为 \(O(n\log n)\) 原理 先将所有点按 \(x\) 坐标排序,这样我们就可以把点分成两部分,一部分在
阅读全文