2025.11.14模拟赛

IOI赛制,fjj的模拟赛,题目质量非常高(准确来说是非常适合我们),fjj强大的%%%

赛时看T1,然后打了60暴力,已经知道用组合数来求了,然后也知道固定左上角的来求答案,但是就是没想明白怎么去除重复的贡献

然后一看榜,wc,lmy怎么25分钟就切了

时间过了一会,然后一看,wc,大家怎么全切了

直接红温了😡,一怒之下,我去了一趟厕所,然后一闻到那个味,我就清醒起来了

然后我就对着厕所的墙壁,理了一下思路,然后从最简单的情况考虑,先考虑两个,再扩展到3个,然后就会做了

切了还剩1h30min

然后看T3,想到直接贪心没前途,所以考虑用一个 \(a_i\) 来选区间能选则选,然后缩小区间的范围

这在 \(a_i\) 相同时会错,但是考虑只会有相邻的才有这个问题

我先打了一个错的暴力,但是多测没清,然后60->16

考虑用堆来维护两边有依赖关系的贡献,然后若一边不能选了,那另一边一定被缩进去了

均摊O(n)

然后可以用线段树来维护一个寻找一个区间所交的编号最小的区间,然后做就完了

非常麻烦

T2考虑这类排列计数问题

考虑用一个排列状态加入一个数会对序列造成什么影响,然后进行统计答案

一般拍到二维平面上,然后扫描线

连续段dp

考虑一个状态来记录一下,接下来连续段的情况

然后搞一个状态考虑加入一个数然后会对状态造成什么影响,然后进行dp转移即可

记录一下当前露出来的有j个连续段,每次的贡献就是 \((a_{i-1}-a_i)*2*j\)

注意以下左右边界,因为不好判断,所以给他记录到状态里

posted @ 2025-11-14 20:13  daydreamer_zcxnb  阅读(14)  评论(0)    收藏  举报