[2024.11.1]NOIP模拟赛
T1 要求你从每个集合中选一个数字使极差最小。根据数据范围容易想到一个枚举最少元素集合中每一个元素,然后依次计算其他集合最优结果,最后比较的方法。
最开始感觉挺对,相同的情况只需要正负都跑一边即可,写了 30min 后发现跑不过大样例,随手证伪了。
然后开始想办法转化题意。想到如果把数值离散化以后构成一个区间,每个集合当做一种颜色,那么答案相当于在这个区间上选一段最短的区间使得包含所有颜色。
当时直接就写了,但是突然想到题目要求每个集合选一种元素,这种方法根本保证不了。所以思路有点混乱,转去改第一种方法,但是一直改不出来。
上个厕所回来发现第二种方法其实只需要在选的区间内随便删几个重复的元素就可以满足条件,所以方法有正确性。保留了第一种方法后开始写第二种,然后大概在 10 点时过掉了大样例。
T2 看到以后发现这就是独立钻石的变形,原本的游戏有一种方法能使得最终只剩下一个钻石,但是这道题不一定。
根据样例和转化发现答案全都是 \(1\) 或者 \(2\)。深入分析发现只和 \([n*m\%3]\) 有关。
除此之外 \(n=1\) 的部分也很好写。
全写完以后开始写暴力程序,想跑过 \(n,m\le 4\) 的点。花了 35min 写完以后发现一直跑不出来 \(n=m=4\) 的那个点。算了一下大概需要跑 \(2e3s\),于是让它自己跑着,去看 T3 了。
T3 是一个求区间众数出现次数期望的问题,感觉像是组合数,但是我连暴力都不会,所以跳了。
T4 感觉有很多分可以拿,比如链的部分就是一个裸的 DP,但是当时不太想写了,因为 T2 跑不出来,所以想去自己手玩一下 \(n=m=4\) 的那个点。
最后在脑子里玩出来了,但是写的时候怎么也想不起来了,最后也没拿到那档分。