时间安排
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:一个很致命的一点是我没有考虑每个数字的贡献。考虑每个数字的贡献就变成了一个数字是所选区间最大值的方案问题了,可以组合计数解决。不过对于区间的贪心选择则又是一对性质推导,这一块还是有点犯难的。对于同学打表的水品感到难以置信。