20220705NOI模拟赛--考后总结

本文记录了一场编程比赛中选手的时间安排及解题思路。针对T1、T2和T3三道题目,作者分享了从初步尝试到深入思考的过程,并对未解决问题进行了反思。涉及算法包括分治、多项式处理及组合计数。
时间安排

13:00–13:05 读题,T3感觉不可做。
13:05–13:25 T1,显然对于小数据,可以用set维护数字增减,然后暴力提升幂次。然后发现n<=5000根本跑不过。
13:25–13:40 T2,暴力,模拟即可。
13:40–14:20 T3,不晓得暴力怎么写。试图写个费用流,发现不好建图。感觉排列的各种情况对答案的影响很复杂,就弃了。
14:40–15:30 T1,值域小的时候,可以用桶。值域大的时候可以用hash。另外,一个想法是枚举2的幂,查询对应的前缀,依旧可以用hash维护。这样就有66分了。考虑怎么扩展到正解。容易发现,最终幂最多是最大幂+log,可以枚举,然后找对应的前后缀,值域过大怎么办?用hash mod乱搞应该就可以了。怎么寻找呢?不太会。
15:30–16:00 T2,看到组合数莫名想到多项式,似乎可以根据次数拉格朗日插值,发现次数有点大。发现每次变化的是一个分数,考虑能不能对这个分数拉差,好像也不太形。发现拉插在这道题没有优势。但是好像不用多项式就没法做。
16:00–16:30 T3,考虑怎么写暴力。或者怎么贪心。
16:30–17:30 考虑T1正解。T2多项式做法。没什么想法。
17:30–18:00 越想越寄。饿饿,困困,饭饭。

回顾&反思

T1:没考虑到分治。一直在想怎么找区间,但实际上套个分治就可以了。
T2:一个比较妙的转化是,将组合数考虑成路径,然后用多项式快速处理。不过这一块依旧是我不太会的地方,还没看太懂。
T3:一个很致命的一点是我没有考虑每个数字的贡献。考虑每个数字的贡献就变成了一个数字是所选区间最大值的方案问题了,可以组合计数解决。不过对于区间的贪心选择则又是一对性质推导,这一块还是有点犯难的。对于同学打表的水品感到难以置信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值