12 2021 档案

摘要:题目 Luogu P2480 求值: \[ G^{\sum_{k\mid n}\binom{n}{k}} \bmod 999911659 \] 分析 若 \(999911659\mid G\) ,显然答案为 \(0\) 若 \(999911659\not\mid G\) ,因为 \(99991165 阅读全文
posted @ 2021-12-30 20:44 f(k(t)) 阅读(30) 评论(0) 推荐(0) 编辑
摘要:CRT 简介 CRT(中国剩余定理)可用于求解如下形式的线性同余方程组 \[ \begin{cases} x \equiv b_1 \pmod{a_1}\\ x \equiv b_2 \pmod{a_2}\\ \cdots \\ x \equiv b_n \pmod{a_n} \end{cases} 阅读全文
posted @ 2021-12-29 17:14 f(k(t)) 阅读(75) 评论(0) 推荐(0) 编辑
摘要:邻接矩阵 原理 使用一个二维数组 mat 来存边,其中 mat[u][v] = w 表示结点 \(u,v\) 间存在一条权值为 \(w\) 的边 复杂度 设图有 \(n\) 个点 \(m\) 条边 查询是否存在某条边 \(O(1)\) 遍历一个点的所有出边 \(O(n)\) 遍历全图 \(O(n^2 阅读全文
posted @ 2021-12-26 20:29 f(k(t)) 阅读(33) 评论(0) 推荐(0) 编辑
摘要:欧几里得算法 原理 欧几里得算法用于求解两个数的最大公约数,它基于下面这个公式: \[ \gcd(a,b)=\gcd(b,a\bmod b) \] 可以简单地证明: 设 \(A\) 为 \(a,b\) 的公约数组成的集合, \(B\) 为 \(b,a\bmod b\) 的公约数组成的集合,只需证 \ 阅读全文
posted @ 2021-12-26 20:16 f(k(t)) 阅读(111) 评论(0) 推荐(0) 编辑
摘要:简介 BSGS(baby-step,giant-step)算法可在 \(O(\sqrt p)\) 的时间内求解离散对数问题,所谓离散对数,就是形如下面的同余方程的解: \[ a^x\equiv b\pmod p \] 其中 \(a\perp p\) 原理 因为 \(a\perp p\) ,由欧拉定理 阅读全文
posted @ 2021-12-26 00:03 f(k(t)) 阅读(93) 评论(0) 推荐(0) 编辑
摘要:拉链法 JLOI2011 不重复数字 const int SZ = 100007; struct hash_table { int head[SZ], next[SZ], key[SZ], val[SZ]; int cnt; void init() { cnt = 0; memset(head, - 阅读全文
posted @ 2021-12-25 11:31 f(k(t)) 阅读(58) 评论(0) 推荐(0) 编辑
摘要:题目 Luogu P1350 有下面这样一个网格棋盘, \(a,b,c,d\) 表示了对应边的长度,也就是对应格子数: 当 \(a=b=c=d=2\) 时对应下面这个棋盘: 要在这个棋盘上放置 \(k\) 个互不攻击的车,也就是 \(k\) 个车没有两个再同一行或同一列,求方案数 分析 设上方 \( 阅读全文
posted @ 2021-12-21 17:04 f(k(t)) 阅读(37) 评论(0) 推荐(0) 编辑
摘要:题目 Luogu P3166 给定正整数 \(N,M\) ,计算三点都在 \(N\times M\) 的网格的格点上的三角形有多少个 分析 可以发现,只要三点位于格点且不共线就能形成三角形,考虑计算三点共线的情况: 平行于 \(x\) 轴共线: 每行有 \(m+1\) 个点,共 \(n+1\) 行, 阅读全文
posted @ 2021-12-21 16:49 f(k(t)) 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题目 Luogu P1066 给定 \(k,w\) ,设 \(r\) 是一个 \(2^k\) 进制数,求满足以下条件的 \(r\) 的个数 \(r\) 至少是一个 \(2\) 位的 \(2^k\) 进制数 作为 \(2^k\) 进制数,除了最后一位外, \(r\) 的每一位严格小于它右边相邻的那一位 阅读全文
posted @ 2021-12-20 16:15 f(k(t)) 阅读(40) 评论(0) 推荐(0) 编辑
摘要:在题目要求对组合数取模时,可以用卢卡斯定理等方法,但是要求算出组合数的具体值时,就需要用高精度计算大组合数了 原理 对于素数 \(p\) 在 \(n!\) 中的幂次 \(cnt(n,p)\) ,有如下公式: \[ cnt(n,p)=\sum_{i=1}^{\infty} \lfloor\frac{n 阅读全文
posted @ 2021-12-20 15:39 f(k(t)) 阅读(96) 评论(0) 推荐(0) 编辑
摘要:简介 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。康托展开的实质是计算当前排列在所有由小到大的排列中的顺序,因此是可逆的。——百度百科 简单来说,通过康托展开可以确定一个给定的 \(n\) 位数的排列是字典序中的第几个排列(排名) 康托展开 给定一个 \(n\) 位数的排列 阅读全文
posted @ 2021-12-18 17:49 f(k(t)) 阅读(53) 评论(0) 推荐(0) 编辑
摘要:加法递推 由 \(\displaystyle \binom{n}{m}=\binom{n-1}{m}+\binom{n-1}{m-1}\) 求出 边界条件: \(\displaystyle \binom{1}{0}=\binom{1}{1}=1\) 和 \(\displaystyle \binom{ 阅读全文
posted @ 2021-12-16 18:51 f(k(t)) 阅读(34) 评论(0) 推荐(0) 编辑
摘要:简介 在许多情况下,我们都要维护一个数组的前缀和 \(s[i]=a[1]+a[2]+\cdots+a[i]\) ,但如果我们修改了其中一个 \(a[i]\) ,那么 \(s[i],s[i+1],\cdots,s[n]\) 都会发生变化。所以每次修改后我们都要对前缀和数组进行维护,在最坏的情况下复杂度 阅读全文
posted @ 2021-12-14 11:16 f(k(t)) 阅读(84) 评论(1) 推荐(1) 编辑
摘要:定义 如果大于 \(1\) 的正整数 \(p\) 仅有正因子 \(1\) 和 \(p\) 则称 \(p\) 为素数,不是素数且大于 \(1\) 的整数为合数, \(1\) 既不是素数也不是合数 定理 算术基本定理 任何一个大于 \(1\) 的正整数 \(a\) 都能唯一分解为有限个质数的乘积,写作: 阅读全文
posted @ 2021-12-10 21:43 f(k(t)) 阅读(176) 评论(1) 推荐(0) 编辑