P17142 [NOI 2026] 布丁 题解

题目链接:P17142 [NOI 2026] 布丁#18985. 布丁

这是一种不需要大脑的做法。

以下题解中,一个“等价类”代表在当前还可能为答案的数集合 $ T $ 里面,设问的集合为 $ S $,询问 $ S \cup u $ 得到的结果相同的所有的 $ u $ 组成的集合(其中 $ u\in T $)。

考虑手撸决策树,一开始可以问 $ \lbrace 7, 35, 105, 210, 420, 840, 1680, 3360\rbrace $,然后会分成若干个等价类,大小小于等于 $ 27 $ 的等价类都可以一次询问解决,然后剩下的等价类总共只有 $ 27 $ 个(左右?忘了具体值了),有一种比较优的构造是 $ \lbrace kx(x+1), (x+1)(x+2), \dots k(x+len-1)(x+len) \rbrace $,直接将 $ k=1 $ 套到大部分等价类上就会剩下 eps 个数,可以一次询问解决(并且在总长度 35 以内),有几个等价类也可以通过微调(比如第一个变成 $ kx(x+2) $,然后删掉第二个,增加 $ k(x+len-1)(x+len-1) $ 状物,注意调整出的数是奇数会比偶数优,然后如果等价类里面的数都是某个数的倍数则 $ k $ 为这个数即可),然后我们就发现只剩下 2 个等价类无法处理了(大小分别为 192 和 301)!对于大小为 192 的等价类,可以询问刚刚的构造,但是 $ k $ 改成 2,由于等价类的数在一个很小的区间内,所以第三次询问只需要 2 个数(两个数大小均要在等价类中出现的最大数和最小数之间,刚刚的构造也是类似),然后就可以解决大小为 192 的等价类里面的每个数了。对于大小为 301 的等价类,由于数的大小都在 $ [1681,3000] $ 这个范围内,刚刚的方法很难再凑出,考虑询问若干个当前等价类里面的一个出现较多的质因子的倍数 $ x $(比如大部分都是 11),构造形如 $ \lbrace xy, x(y+2), x(y+6), x(y+14)\rbrace $ (加的数也可以是其他质因子的若干次方,并且相邻的数必须最大公约数为刚刚加的数,需要若干微调),使得每个数大小都在这个等价类的最大最小值之间,这样可以解决除了一个特殊等价类以外的所有等价类。这个特殊等价类是

1891, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2021, 2027, 2029, 2033, 2039, 2041, 2047, 2053, 2059, 2063, 2069, 2071, 2081, 2083, 2087, 2089, 2099, 2111, 2873, 2899, 2951

注意到前面的数密集,倒数第四个数和第三个数的差极大,最后三个数都是 13 的倍数,那么考虑构造一组满足两两之间的 $ \gcd $ 不同,且最后一个数是 13 的倍数的数列即可,需要一些时间,一个可行的构造是 $ \lbrace 1990, 2000, 2024, 2052, 2079, 2086, 2090, 4225\rbrace $。建议写两份辅助代码辅助构造和写代码。

代码过长,放在剪贴板中

posted @ 2026-07-26 20:40  MCYYDS  阅读(9)  评论(0)    收藏  举报