1 条题解
-
0
自动搬运
来自洛谷,原作者为

fish_love_cat
「要毁灭世界,根本不需要邪恶。起初,那些都是不会被任何人怪罪的小小愿望。而那样的愿望却如此轻易地,和末日相连在一起。」搬运于
2025-08-24 22:59:24,当前版本为作者最后更新于2024-06-15 22:11:07,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
好玩的构造题!
设 分别为序列 中某个子串 中第一大的值,第二大的值,长度,贡献,第二小的值和第一小的值。
依题意得:
当 时,则有 。
当 时,则有 。
根据上面的条件可知:
当存在一个正整数 满足 时,则有关于序列 的 满足 。(情况一)
否则,必存在一个正整数 满足 。(情况二)
考虑对两种情况分别进行构造。
情况一:
我们可以构造出一个长度为 且满足关于该序列的 有 的序列 ,然后再构造出一个长度为 且满足关于该序列的 有 的序列 。将这两个数列的元素放在一起,就构造出了合法的序列 。
因为题目保证 ,所以一定可以构造出这样的合法序列 。
情况二:
因为有 ,所以我们不妨将贡献拆成 和 两部分来分别构造。
显然 的那部分可以用类似情况一的方式构造出一个长为 的序列 。
注意到,。
设 均为正整数。
所以我们可以构造一个数字为 ,并将 在保持它仍合法的情况下,将里面的数字设为若干个 和若干个 。注意要求合法,即不违反情况一中对 的定义。
再设 是当前 中元素 的个数。
显然的,修改后的贡献会在之前的基础上加上 。
我们通过构造使 即可。
剩下的,用类似情况一的方式构造一个长为 的 。
将这两个数列的元素和 放在一起,就构造出了合法的序列 。
关于情况二中 的证明:
证毕。
然后就可以开始愉快的构造了。
其实下面已经不重要了,看着上面相信大家都能构造出来对叭。
但还是介绍一下我的方法:
首先, 跑一遍暴力求 。
令 ,对于情况一中 的构造,令元素全部为 即可,而 的构造,官解是全部 ,我是全 ,都能过的。
代码看不看其实无所谓吧。
懒得放了,注意求 的时候跑不到 可能会死在 #1。
做完了。提交记录。
后话:
不知道怎么搞的,老是想到一些情况二的构造无法胜任的情况。不过按理来说能让情况二构造出锅的数据都会被情况一构造掉吧,所以大抵是 hack 不掉的。
至少现在看解法没什么问题。
至少我自以为的证伪 hack 居然都满足情况一,很神奇,欢迎 hack(
- 1
信息
- ID
- 10158
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者