P5246 题解

· · 题解

前言

题目传送门!

更好的阅读体验?

耗时一个晚上,没看题解把消失的源代码切了,很高兴,来写篇题解!

点击 \color{red}\textbf{每个子任务的标题} 可以查看代码。

如果不想看心路历程,请 \color{red}\textbf{划到最底下} 看一行流题解。

Task 1

是一堆小写字母,往 exe 里挨个输入 \texttt{a}\sim\texttt{z} 就能发现这是一个映射。直接做即可。

Task 2

input2.txt 看起来非常简单,但是输进去 \text{exe} 我就破防了:这是啥啊?????

输入 0\sim10,答案 a_i10, 2030, 8082, 18166, 32282, 50430, 72610, 98822, 129066, 163342, 201650

稍微思考一下就不难了。注意到 8082\approx 2030\times 2^218166 \approx2030\times 3^2。尝试变成整除,于是发现 -10 就整除了。

不看前面几项。我草这是等差数列。差是 2016,很吉祥啊!

所以 b_n=2020+2016(n-1)a_n=n\cdot b_n+10=n(2020+2016(n-1))+10,输出即可。

很快把公式抄进代码里,和 1\sim20 的正确答案比一下。????????为啥这正确答案还带突然变小的???????

这并不困难。发现突然变小的那一项和我们的答案正好差 233333,很容易想到是 \bmod 233333 啦。

Task 3

https://oeis.org/A097430。

Task 4

input4.txt 显然是读入一张图。随便输入一点普通图,发现结果总是 n^2,直到你输入了一个不连通的图 (V=\{1, 2, 3, 4, 5\}, E=\{\small(1, 2), (2, 3), (4, 5)\normalsize\}),发现答案是 13=3^2+2^2。这就很显然了,答案即 \sum\textbf{连通块的大小}^2

Task 5

input5.txt 经过观察,先读入 n-1 条有权边(应该是构成一棵树),再读入 m 组点对,计算答案。

先试试 m=1 的情况。对于 (u,v),容易发现就是 \operatorname{dist}(u,v)

再试试 m=2,发现答案非常神秘,为啥那两个点对的距离是 520,最后的答案还能是 17 啊。于是试了一堆二元运算符后发现答案是所有距离的异或和,就离谱。

Task 6

input6.txt 长得和 input5.txt 一样捏。所以就很轻松了,发现不同点在于 \operatorname{dist}(u,v) 变成了 \min\limits_{t\in(u\to v)} w_t。仍然是异或全部权值。

然后你发现你错了。实际上可以通过输入询问点对 (u,u) 来获取 \text{minn} 的初值应为 1987654321

Task 7

(表格在洛谷可能会寄,请移步博客园)

输入规模又变小了。设每次读入的两数为 (n,m),直接打表:

n 1 2 3 4 5 6 7 8 9
m=1 1 2 3 4 5 6 7 8 9
m=2 2 5 7 10 12 15 17 20 22
m=3 3 7 12 16 19 25 28 32 37
m=4 4 10 16 24 28 36 40 48 54
m=5 5 12 19 28 37 46 51 60 67

观察 (m=2)\Rightarrow(m=3),打表 a_{n,m}-a_{n,m-1}

n 1 2 3 4 5 6 7 8 9
m=(1\Rightarrow2) 1 3 4 6 7 9 10 12 13
m=(2\Rightarrow3) 1 2 5 6 7 10 11 12 15
m=(3\Rightarrow4) 1 3 4 8 9 11 12 16 17
m=(4\Rightarrow5) 1 2 3 4 9 10 11 12 13

再差分,打表 b_{n,m}-b_{n-1,m}

n 1\Rightarrow2 2\Rightarrow3 3\Rightarrow4 4\Rightarrow5 5\Rightarrow6 6\Rightarrow7 7\Rightarrow8 8\Rightarrow9
m=(1\Rightarrow2) 2 1 2 1 2 1 2 1
m=(2\Rightarrow3) 1 3 1 1 3 1 1 3
m=(3\Rightarrow4) 2 1 4 2 1 4 2 1
m=(4\Rightarrow5) 1 1 1 5 1 1 1 1

整理一下。

n 2 3 4 5 6 6 8 9
m=2 2 1 2 1 2 1 2 1
m=3 1 3 1 1 3 1 1 3
m=4 2 1 4 2 1 4 2 1
m=5 1 1 1 5 1 1 1 1

显然即 c_{n,m}=\gcd(n,m)。倒推一下就能得到 a_{n,m}=\sum\limits_{i=1}^n\sum\limits_{j=1}^m \gcd(i,j)

贺一下 P2398 的代码即可。n\ne m 时是一个很小的点,所以直接暴力。

Task 8

很多人说这一问很难,但是我觉得还好捏。

随便输进去一个排列,发现答案是 \dfrac{n(n+1)}2,很容易想到答案是这个数组的 [l,r] 数量。

于是输入 \{1,2,1,2\},发现答案是 6。枚举一下 [l,r] 就能发现求的是本质不同的子串个数

去 P2408 贺个题解改一改即可。

Task 9

input9.txt 显然让我们输入一些点对。瞎输了一下,为啥是小数啊。

于是输入 (1,2), (3,4),发现答案是 2.828\approx2\sqrt2=\sqrt8。很显然是 (x_i,y_i) 在平面上两点的距离。

那么就很简单了,多输入几个数就能发现是平面最近点对。

去 P7883 贺个代码即可。

Task 10

这种题目总是有一些 Task 是不正经的 /hanx。

纯答案题解