P5246 题解

前言

题目传送门!

更好的阅读体验?

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

点击 每个子任务的标题 可以查看代码。

如果不想看心路历程,请 划到最底下 看一行流题解。

Task 1

是一堆小写字母,往 exe 里挨个输入 az 就能发现这是一个映射。直接做即可。

Task 2

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

输入 010,答案 ai10,2030,8082,18166,32282,50430,72610,98822,129066,163342,201650

稍微思考一下就不难了。注意到 80822030×22181662030×32。尝试变成整除,于是发现 10 就整除了。

bi=ai10i,答案 bi0,2020,4036,6052,8068,10084,12100,14116,16132,18148,20164

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

所以 bn=2020+2016(n1)an=nbn+10=n(2020+2016(n1))+10,输出即可。

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

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

Task 3

https://oeis.org/A097430

Task 4

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

Task 5

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

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

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

Task 6

input6.txt 长得和 input5.txt 一样捏。所以就很轻松了,发现不同点在于 dist(u,v) 变成了 mint(uv)wt。仍然是异或全部权值。

然后你发现你错了。实际上可以通过输入询问点对 (u,u) 来获取 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)(m=3),打表 an,man,m1

n 1 2 3 4 5 6 7 8 9
m=(12) 1 3 4 6 7 9 10 12 13
m=(23) 1 2 5 6 7 10 11 12 15
m=(34) 1 3 4 8 9 11 12 16 17
m=(45) 1 2 3 4 9 10 11 12 13

再差分,打表 bn,mbn1,m

n 12 23 34 45 56 67 78 89
m=(12) 2 1 2 1 2 1 2 1
m=(23) 1 3 1 1 3 1 1 3
m=(34) 2 1 4 2 1 4 2 1
m=(45) 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

显然即 cn,m=gcd(n,m)。倒推一下就能得到 an,m=i=1nj=1mgcd(i,j)

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

Task 8

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

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

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

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

Task 9

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

于是输入 (1,2),(3,4),发现答案是 2.82822=8。很显然是 (xi,yi) 在平面上两点的距离。

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

去 P7883 贺个代码即可。

Task 10

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

纯答案题解

  • Task1:对于字母 az,映射 yfrbkgimujvphatdsnelozcxwq
  • Task2:an=(n(2020+2016(n1))+10)mod233333
  • Task3:an=nπ
  • Task4:给定一张图,输出 连通块的大小2
  • Task5:给定一棵有边权树,输出 dist(u,v)
  • Task6:给定一棵有边权树,输出 minw(u,v)
  • Task7:i=1nj=1mgcd(i,j)nm 的情况允许暴力。
  • Task8:本质不同的子串个数。
  • Task9:平面最近点对。
  • Task10:10invalid input!
posted @   liangbowen  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示