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\text{lcm}(a,b)-d\times\text{gcd}(a,b)=x\\ \Rightarrow c\times\frac{a\times b}{\text{gcd}(a,b)}-d\times\text{gcd}(a,b)=x\\ \Rightarrow c\times\frac{k1\times\text{gcd}(a,b)\times k2\times\text{gcd}(a,b)}{\text{gcd}(a,b)}=x\\ \Rightarrow c\times\text{gcd}(a,b)\times k1\times k2-d\times\text{gcd}(a,b)=x\\ \Rightarrow\text{gcd}(a,b)\times(c\times k1\times k2-d)=x\\ \Rightarrow\text{gcd}(a,b)=\frac{x}{c\times k1\times k2-d} \]

所以 \(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)\),所以答案为:

\[\sum_{i=1}^Nif(i)\\ =\sum_{i=1}^Ni\sum_{i|d}^N\mu(\frac{i}{d})g(d)\\ =\sum_{d=1}^Ng(d)\sum_{i|d}i\mu(\frac{i}{d})\\ =\sum_{d=1}^N\mu(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\)

posted @ 2025-08-08 10:47  小熊涛涛  阅读(11)  评论(0)    收藏  举报