20220803NOI模拟赛--考后总结

博主分享了在算法竞赛中的时间安排和解题思路,针对T1、T2、T3三道题目进行了深入分析。T1是套路题,通过交换求和符号和斯特林数解决;T2反思应结合最小割与树的性质,利用树上DFS优化;T3探讨了背包DP和FFT的应用。总结了各类解题技巧和优化方法。
摘要由CSDN通过智能技术生成
时间安排

7:30–7:35 读题,今天题目非常神仙。

7:35–8:30 T1,显然要 DP 。直接维护集合显然不可能,考虑能否维护当前集合有几个元素,但这样基本做不了。又想到建虚树什么,反正非常假。

8:30–9:00 T1 暴力。

9:00–9:30 T2,尝试写了一下暴力最小割,挂了,非常自闭,感觉这个最小割非常复杂就把T2弃了。

9:30–10:30 T3,目测可以DP,将每个元素的数量看作物品,当 c n t ≤ 2 cnt \leq 2 cnt2 时,物品之间的关系可以背包 DP。打表发现了很多规律,需要一堆分类讨论,于是就奔着特殊点做,发现只会 n 3 n^3 n3 过不了,貌似可以硬上FFT 变成 n 2 l o g n^2log n2log 但是常数巨大巨麻烦。

10:30–11:00 T3,思考背包怎么优化。

11:00–12:00 T1,思考怎么 DP。

回顾&反思

T1: 是一道套路题,关键要交换求和符号,实际上时分解贡献,将所有集合大小的求和问题变为枚举元素考虑它在多少集合出现,然后套路容斥。一个经典但是有用的 trick 是,当指数 k k k 较小时,在求解 x k x^k xk 这样的贡献时可以考虑用斯特林数拆掉指数。对于有若干元素存在的问题,可以枚举有几个不存在,容斥。

T2: 比赛的时候完全没有把最小割和树结合起来,看了几眼觉得复杂就跳了,非常可惜。仔细观察可以发现可以将答案拆成子树贡献的形式,用树上 dfs 边走边合并信息做就可以了。一个减少空间的 trick 是,当要用树剖和线段树合并维护信息时,可以令一条重链上的点共用一个线段树,即最下面的点建树,上面的点借用该树,轻儿子合并时将处理过信息且不作为树上结点的点直接回收,这样空间复杂度是 n l o g nlog nlog

T3:结论和比赛时推的结论一模一样,不过 std DP写的貌似更妙。待 upding …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值