2025-8-8 总结
数论
A - Primal Sport
情况
- 时间:\(10min\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 贪心
思路
我们假设 \(x_1\) 的最大质数是 \(p_1\),\(x_2\) 的最大质数是 \(p_2\),根据题目操作描述可以得知 \(x_1-p_1+1\le x_0\le x_1,x_2-p_2+1\le x_1\le x_2\),所以得到以上两个不等式组可以先预处理出每个数的最大质数,然后在 \(x_2-p_2+1\sim x_2\) 这个区间内枚举 \(x_1\) 的取值,然后取最小的 \(x_1-p_1+1\) 即可。
分析
其实通过观察我们发现 \(x_1\) 小,\(x_0\) 不一定大,所以可以枚举 \(x_1\)。然后为了使得 \(x_0\) 更小,我就在寻找他们之间的关系,然后可以发现如果处理 \(x_0\) 的时候选择了一个质数 \(q\),则 \(x_1-q+1\le x_0\le x_1\),所以想让 \(x_0\) 更小就要选最大的质数,然后 \(x_1\) 和 \(x_2\) 的关系也如此,所以这道题做出来了。
B - The Number of Pairs
情况
- 时间:\(20min\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 枚举
思路
首先我们可以简化式子:
所以 \(c\times k1\times k2-d\) 一定要为 \(x\) 的因数。所以 \(k1\times k2=\frac{(c\times k1\times k2-d)+d}{c}\),所以还要判断枚举的这个数加上 \(d\) 是否是 \(c\) 的倍数,由于 \(k1\) 和 \(k2\) 有很多种,所以 \(2^{k1\times k2}\) 的和,所以就做出来了。
分析
一开始看到这道题就想要化简,因为 \(a\times b=\text{lcm}(a,b)\times\text{gcd}(a,b)\),所以可以干掉 \(\text{lcm}\),然后发现简化这个为一个分式,就想要把下面的数消掉,于是把 \(a\) 和 \(b\) 给拆开求解,然后就做出来了。
C - 面包题
情况
- 时间:\(20min\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- \(\text{dp}\)
思路
我们把所有不满足情况的一对数连上边,然后可以发现连成的连通块其实为一条链,所以我们想一下如何统计一个连通块的方案数,我们可以想到 \(\text{dp}\),设 \(dp_i\) 为该连通块以到第 \(i\) 个的方案数,所以得到这个位置不选或者选,所以转移方程为 \(f_i=f_{i-1}+f_{i-2}\),统计完 \(\text{dp}\) 后再利用加乘原理即可算出总方案数。
分析
一开始我是把所有可行的两条边连起来看有多少可行的路径,然后发现边的数量十分多,并且有可能 \(x\to y\to kx\),所以我就把不合法的两条边相连,然后每个连通块之间是互不干预的,所以就做出来了。
D - Intruder Outsmarting
情况
- 时间:\(20min\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 翡蜀定理,扩展欧几里得
思路
通过题目可以列出一个同于方程 \(X_i+Dx\equiv X_{w-i+1}\pmod N\),所以把这个同余方程拆解成一个二元一次不定方程,所以可以利用翡蜀定理来判断答案是否可行,如果可行再利用扩展欧几里得来计算最小答案即可。
分析
一开始就想到了题目可以列成一个同余方程,同余方程可以设一个数然后变成不定方程,然后我就想解出这个方程的最小答案,然后突然发现不能判断是否可行,最后回忆时,想到了翡蜀定理。
E - 回首过去
情况
- 时间:\(40min\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 容斥
思路
首先我们可以定义 \(c=\text{gcd}(x,y),x=a\times c,y=b\times c\),所以因为 \(\frac{x}{y}\) 为有限小数,所以 \(\frac{a\times c}{b\times c}\) 也是有限小数,所以 \(\frac{a}{b}\) 也是一个有限小数,所以可以知道 \(b\) 只包含质因数 \(2,5\)。所以答案其实就是为 \((g([l,r],1)-g([l,r],2)-g([l,r],5)+g([l,r],10))\times f(\lfloor\frac{n}{c}\rfloor)\times\lfloor\frac{n}{c}\rfloor\)(其中 \(g([l,r],x)\) 表示在 \([l,r]\) 这个区间内 \(x\) 倍数的数量,\(f(x)\) 表示 \([1,x]\) 内只包含质因数 \(2,5\) 的数的个数)。对于 \(g([l,r],x)\) 可以利用前缀和 \(g([l,r],x)=g([1,r],x)-g([1,l],x)\)。
分析
比较好想,感觉比较简单,只需要想到利用容斥来最后计算答案就好了。
F - Little Elephant and Colored Coins
情况
- 时间:\(30min\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- \(\text{dp}\)
思路
一看到这道题想到了 \(\text{dp}\) 但由于最后买的物品价格是 \(long\ long\) 级别的,所以不能用价格当状态。所以我们令 \(f_j\) 为硬币集合 \(v-{v_1}\) 中所有总面值模 \(v_1\) 等于 \(j\) 的选择方案中最小的总面值。所以可以得到转移方程 \(f_{(j+v_i)\bmod V_1}=\min(f_{(j+v_i)\bmod V_1},f_j+v_i)\),所以这样就做出来了。
分析
这道题如果一开始卡在了如何优化 \(\text{dp}\) 或如何从另一个思路做 \(\text{dp}\),然后突然发现 \(s\) 很大,但 \(n\) 和 \(v\) 都很小,所以就有了以上的思路。
G - 寿司晚宴
情况
- 时间:\(40min\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- \(\text{dp}\)
思路
我们可以考虑用状压 \(\text{dp}\) 把质数压成一维,但发现小于等于 \(500\) 的质数其实特备多,但细心观察可以发现由于所有的数都小于等于 \(500\),所以只可能有一个质数大于等于 \(23\),所以其实只需要统计小于 \(23\) 的 \(8\) 个质数就行了,如果有大于 \(23\) 的质数就直接另外统计,这样最后只需要再比较以下就行了。
分析
一开始以为质数很少,就写了一个状压 \(\text{dp}\),然后只有 \(30\),随后发现一个数 \(x\) 大于等于 \(\sqrt x\) 的质数有且只有 \(1\) 个,所以就想到了把大于等于 \(\sqrt x\) 的质数单独求解。
H - Discrete Logarithm Problems
情况
- 时间:\(30min\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 枚举
思路
每次质因数分解,每次分解时定义 \(x=kMod-1\),如果 \(x%j=0\) 并且 \(a_i^{x/j}=1\) 那么 \(x\) 除以 \(j\) 否则不变,最后如何两个剩余的数为倍数关系,就加上。最后输出答案即可。
分析
比较简单,最后的时候如果 \(n^2\) 统计会炸,所以可以用 \(pair\) 存出现次数。
I - Cowslip Collections
情况
- 时间:\(1h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 莫比乌斯反演
思路
设 \(f(i)\) 表示 \(\text{gcd}\) 为 \(i\) 时的答案,\(g(i)\) 表示 \(\text{gcd}\) 为 \(j\) 的倍数时的答案,则 \(g(i)=\sum_{i∣d}^Nf(d)\)。由莫比乌斯反演可得:\(f(i)=\sum^N_{i|d}\mu(\frac{i}{d})g(d)\),所以答案为:
设 \(cnt_i\) 表示当前 \(a\) 中为 \(i\) 的倍数的数的个数,则显然 \(g(i)=C_{cnt_i}^k\),于是在预处理每个数的因数后枚举因数并更新答案即可。
分析
发现对倍数形式的莫比乌斯反演不熟,看了很久才想到做法。
J - Phoenix and Odometers
情况
- 时间:\(1h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- \(\text{Tarjan}\)
思路
首先进行缩点,对于一个点,与它不在同一连通分量的点无法形成回路,所以对每个连通分量分别计算。假设一个点 \(u\),有两个长度为 \(a\) 和 \(b\) 的环,那么就相当于找两个非负整数 \(x\) 和 \(y\),使得 \(ax+by=w\),其中 \(w\) 为题中的路径长,根据裴蜀定理得到上述方程成立当且仅当 \(\text{gcd}(a,b)∣w\)。然后求出所有环长的 \(\text{gcd}\),设为 \(g\),然后根据题意得出 \(a\times g+s=b\times t\),再一次使用裴蜀定理得到 \(\text{gcd}(g,t)∣s\)。

浙公网安备 33010602011771号