2/16考试总结

文章讲述了作者在一次编程竞赛中的时间安排和解题策略。T1题目利用Lucas定理处理组合数奇偶性,但忽略了二进制特性导致丢分;T2通过树上dfs解决;T3题目中,对连通块信息的维护是难点,提出利用dfs序和线段树的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间安排

7:30–7:40 读题,T2是送分题,T3数据结构。
7:40–8:00 T2,树上 dfs 一遍即可。
8:00–10:00 T1,发现可以看做路径计数问题,于是可以找到对应的组合数,用 lucas 求解,显然只与组合数的奇偶性有关,问题是不不能快速算出 1 的系数与对应 w 的乘积和。打表发现 1 比较稀疏,于是对暴力一边剪枝一边对拍,能跑到 1e6 左右。
10:00–11:30 T3,首先有暴力,然后对于链的部分分,可以用 set 简单维护。大部分操作都是简单的,瓶颈在于不太会对于一个连通块修改,想到离线启发式合并、并查集之类的东西,不过都做不了。
11:30–12:00 T1,修 T1 的常数,同时思考有没有其他方法。

回顾反思

T1:
想到了系数只与组合数奇偶性有关,可以用 lucas 求解。
于是就只是用 lucas 计算了,而没有注意到 lucas 计算的过程在二进制上的性质,实际上为C(n,m)奇当且仅当 m 在二进制上是 n 的子集。
没能 A 掉,靠乱搞剪枝暴力丢了 20 分,不太应该。
求解时要多关注性质。尤其注意 lucas 是对组合数在 mod 进制下对每一位求解并累积的本质,当 mod=2 时,该位为 1 就只有 C(0,0)C(1,0)C(1,1) 三种可能,对应了一个二进制的子集关系。
T3:
比较巧的一道题。
考场上,对于其他操作都是简单的,但是想不到一个连通块的信息怎么维护。
瓶颈在于如何修改和维护树上一个同颜色连通块的信息。
考虑得到 dfs 序后,一个子树对应了一个区间,
对于一个连通块,我们可以找到其最靠上的颜色相同的点 x,那么其子树内与它相连的若干连通块也是若干段区间,对应到线段树上若干个区间。而在 x 子树内,不同连通块可以由其被异色点覆盖次数唯一区分,在线段树上找到 x 子树对应的区间,记 x 被异色覆盖的次数为 num ,那么线段树上被对应异色覆盖为 num 的子区间即对应了 x 所在的连通块。
这个套路可以记一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值