模拟赛
模拟赛
2025多校冲刺CSP模拟赛1
交友(friend)
宝宝题,直接贪心。
如果有 CGC 这样横向或纵向的子串出现,必然是直接给两端匹配,否则扫描矩阵的每一行,贪心选就行。
炼金(alchemy)
赛时写了一个复杂的不真实的做法,可能是题目的特殊性质的原因,总之是冲过去了。
思路就是二分答案,然后搜。(这里用BFS应该更方便一些)
如果当前种类金属不够,就向它的原料索取。加一些操作以保证复杂度即可。
这里有一个为什么要用二分答案的问题。在上述做法中,显然可能有多个不同金属的合成会用到同一种金属,由于金属合成是单向的,预先消耗过多某一类金属可能使其他金属的合成不够用,所以我们采用需要多少拿多少的暴力思路,然后二分答案就很自然了。
当然存在不用二分答案的做法,看你喜欢写什么。
磁铁(magnet)
我要开始辱骂自己了:是不是唐人,预设型DP,都考过无数遍的trick了还能被创飞!这确实是我的严重错误。我需要彻底承认我完全没有水平,过的预设型DP题也全是签到变着花样耍阴招的垃圾水题,现在毫无天赋的 Oier 要想办法把国庆集训的多校联训糊弄过去。
显然的一个思路是把这些磁铁无缝衔接地排列起来,然后把多出来没用到的空位插到相邻磁铁之间,是一个插板状物。
先按照升序排序,这样容易计算贡献,设 $ f_{ i,j,k } $ 表示前 \(i\) 个磁铁分为 \(j\) 个连通块,一共占据了 \(k\) 个空位的方案数。转移有:
-
当前磁铁是一个新的连通块, $ f_{ i,j,k } = f_{ i-1,j-1,k-1 } $
-
并到之前的连通块两端, $ f_{ i,j,k } = 2 \times f_{ i-1,j,k-len(i) } \times j $
-
合并两个连通块, $ f_{ i,j,k } = f_{ i-1,j+1,k-2len(i)+1 } \times (j+1) \times j $
答案就是 $ \sum_{ i \ge 1 } f_{ n,1,i } \times \dbinom{ m-i+n }{n} $
铁轨(rail)
感觉这题很厉害啊。
首先进行一个聪明的转化:把每个速度抽象成节点,每个路段就是速度之间的连边,一个完整的路线应该是形成一个欧拉通路(现在是不完整的)。
为方便起见,我们建立一个速度为 \(inf\) 的虚点,最大点向 \(inf\) 连边, \(inf\) 向最小点连边。(以上所有边都是没有代价的),容易发现此时目标改为欧拉回路没有影响。
现在问题变成了:在这些节点之间连一些边(加速边没有代价,减速边代价为两者之差),使得原图形成一个欧拉回路。
我们拿出值域上相邻的两点,考虑值域跨度能够同时包含他们的边,如果这是一个欧拉回路,那么加速边和减速边的数量应该是相等的。反之,如果不相等,手动加边,统计代价。
这样原图变成了很多欧拉回路连通块。最后一个问题是不连通,仍然需要加边,显然可能有用的边一定是值域相邻的节点之间,用MST状物维护就好了。

浙公网安备 33010602011771号