ABC 284 A~F

A

按题意模拟即可。

代码

B

按题意模拟即可。

代码

C

让我们统计连通块的数量,用并查集维护即可。

代码

D

\[N=p^2q\\ p=\sqrt{\frac{N}{q}}, q=\frac{N}{p^2} \]

所以只要知道 \(p, q\) 中的一个就能知道答案。

然后根据 \(N=p^2q\),可知 \(\min\{p, q\}\le \sqrt[3]{N}\)

直接枚举即可,时间复杂度 \(\mathcal O(\sqrt[3]{N})\)

代码

E

\(1\) 开始遍历每条边,如果到了在之前路径上没有出现过的点,那么简单路径数量就加 \(1\)

因为 \(d_i\le 10\),其中 \(d_i\) 表示第 \(i\) 个点的度数。而且让我们求 \(\min\{10^6, K\}\),所以时间复杂度为 \(\mathcal O(10\min\{10^6, K\})\)

代码

F

字符串 Hash,注意 Hash 的值不能用 unsigned long long 要用 __int128,就是因为这点,我还以为出题人卡 Hash。

我们枚举 \(i\),然后求出 \(i+1\sim i+n\) 的 Hash 值,再求出 \(1\sim i\) 翻转后的 Hash 值和 \(i+n+1\sim n\times 2\) 翻转后的 Hash 值。

接着算出 \(i+n+1\sim n\times 2\) 翻转后的字符串 \(+\) \(1\sim i\) 翻转后的字符串的 Hash 值。

这个靠上面两个值即可求出,具体见代码

posted @ 2023-01-24 20:13  hcywoi  阅读(56)  评论(0)    收藏  举报

Loading