概述

期望 $100+100+40+0=240$,实际同期望,难得没有挂分。。。

赛时

有上一次的经验,应该是按难度升序排列。

先看 T1,这种给个字符串,然后来一堆莫名其妙的操作,再问你最后字符串的题大部分都是降智题(因为我上次就被降智了),我尝试切掉。

花几分钟写了个暴力找规律,然后发现这个规律挺对的,看到数据范围 $5\times10^5$​,也不想着优化了,写了个普通快读,直接 sort 就完事了。

想对拍,然后发现自己不会生成随机字符串,有点尴尬,去看下一道题了。

T2 数学题。俗话说得好:遇到数学先打表。然后我就光速用 python 打了个 $n\leq5000$ 的表。

对着表来回折腾没看出来啥,先跳了。

看 T3,不明所以的 DP+计数,去看 T4,不明所以的 DP+计数。

一看到取模就头疼。

回来看 T2 了。

注意到对于一组解 $(x,y)(x<y)$,还存在另一组解 $(y,z)(y<z)$。于是考虑怎么从这组解得到下一组。

还是不懂,把打表的内容增加了一列 $k$,发现这两组解的 $k$ 相同。。。

于是意识到这是个二次方程的两个根。

于是会做了:把解一个一个算出来,把较大数不超过 $10^{18}$ 的所有解存下来,每个询问二分查找一下就行。

然后写了个程序,过样例之后忽然意识到爆 long long 的问题。

我不是很懂爆 long long 到底会发生什么,不太放心,于是写了个 __int128_t。。。

发现两个程序输出还真不一样,折腾了一下不知道怎么回事,就把 __int128_t 的程序交上去了。。。

这时候才过去 $\text{1.5h}$,感觉机会很大()

去看 T3,愣是不会。。。。去看 T4,似乎要套容斥然后各种计数,不想搞。。。

然后开始躺平。

后来主要去想 T3 了,但还是没想出来。T4 暴力也不会。

看还有半个多小时,写了 T3 的指数级 $30$ 分暴力,然后打表发现有 $10$ 分是卡特兰数,就顺便骗走了。

然后就跑路。。。

赛后

没啥可说的,和想的差不多,T4 没有输出大样例导致少了 $10$ 分,又忘记骗分了。。。

发现 T3 有结论,T4 还是不懂。。。

看到别人 T2 $60$ 分忽然意识到表可以打得大一些,毕竟解不是很多(用C语言打,打到 $10^5$ 应该没问题),不过打小表还是 python 强。

附 python 打表代码,,,,

for i in range(1, 5001):
	for j in range(1, 5001):
		if (i * i + j * j) % (i * j + 1) == 0 and i <= j:
			print(i, j, (i * i + j * j) / (i * j + 1))

总结

DP 实在太差了!!!尤其是计数。。。。一生之痛。。。。

数学题打表确实很重要。

不能被降智(指奇怪的字符串题)。