2025.10.17模拟赛
赛时
看T1,然后想不到优化,一直卡在T1,然后脑子不转
想了一会想了一个优化,然后2h过去了,不确定正确性,写了一个拍
赛场上第一次写拍,感觉还是很好写的
后来证明挂了,原因是没有判前导0的情况,我赛场上真没想到这一点,然后挂了
修改完后,然后还是挂,找了好久没有找出问题,拍了好久,后来核弹直接指出问题,输入时没开long long直接爆毙
加上一个判无解优化,就是判断是否需要两个0,即 n%B^2==0就过了
然后看T2,发现是期望,想不出来,直接退了,还是dp不太行,胆怯了
T3太复杂了,没细想
T4发现可以直接用上次的扫描线思想拿到60分
打完比赛结束了
就是状态不太好,应当好好调整一下
赛后
T2非常简单
考虑树上,我们只需要转化为子树问题即可,考虑期望就是考虑当前的根节点,会不会产生1的贡献
它能产生1的贡献当且仅当在子树中第一个选的数为根,概率是 \(1/siz_u\) 的
然后就做完了
或者考虑dp,考虑当前点被选的期望+儿子的期望,本质相同
因为子树是独立的,并且我们现在只考虑一个点在1时间的概率就能做
关键就是定下来时间和点,把问题简化
T3我们考虑问题就是需要把一些连续段按照一种方式排列使得上一个的最大值大于这一个的最小值
然后考虑到一种调整方式,使得他们首尾相接,然后就能证明,只要不存在值域上的断点,就能合法
因为集合是无序的,并且添加的是排列,所以一些集合添加一个i添加到哪里是不会算重的
只要知道枚举到了哪个数,开始了几个集合,结束了几个集合,就能描述一种不同的状态
把上面3个存到dp里,转移即可
T4,60分做法,考虑枚举本质不同的 \((a,b)\) ,然后统计 \((c,d)\) 答案
因为两个集合的问题只能枚举一个然后更新另一个,所以没法在算法本质上做到更优
但可以在统计答案时做到更优
考虑拆贡献,其实我在写的时就已经能发现了,实际上比a大的a对应的c和比b大的对应的c是独立的,可预处理取交集的
贡献即为 \(a_i+b_j+max(ac_i,bc_j)+max(ad_i,bd_j)\)
然后发现 \(j\) 是可以上线段树上维护的,然后又发现 \(ac_i,bc_j\) 是单调的,也就是在扫描线 i 的过程中,所对应的j是单调的
做一下区间推平维护即可
pjy做法:发现由于 \(ac_i,bc_j\) 是单调的,所以在i固定时,一段j的 \(max(ac_i,bc_j)\) 后缀是固定的,然后再把 \(i,j\) 反转,再跑一边
发现所形成的连续段形成2n个连续段,正好能拼成一个大矩形,可以进行线段树的维护
本质上就是两个单调的序列,本质不同的max只有2n个