7.7模拟赛赛后总结
赛时历程
早上八点十分,拿到题目然后浏览题目,感觉都没有直接的思路,应该是T2的暴力最好写,但是只有5分的样子。。
先多想想T1吧。粗略的考虑了一下,感觉需要考虑一个区间交的时候的偏移量,然后针对两个区间相等的字符,已经存在的考虑如何存储一下它能够相等的位置,一开始想的是一个三元组之类的。然后发现不好处理啊,又思考了各种快速求交啥的乱七八糟的东西,画了两页的图什么的,结果最终除了"两区间字符相等那么已经存在的字符就会在两区间内的加减k*偏移量的位置都相等"这样的关键结论,啥都没有,然而我不太会用这个结论。两个小时打水漂,让我有点不知所措。
十点,粗略的想了下T2,这种题一般都要把询问或者说贡献交给LCA来求,但是好像一下子也不好想,鬼使神差的,跳过了它,转过去考虑T3。
T3想着先考虑如何求出来一个固定点的二分图的数量,发现了公式,但是那个公式只有状态,是不带标号的,扩展到带标号上直观上去做乘法的话就是算多了,然后尝试容斥,也不能容斥掉这部分,接着我还搞了点歪门邪道尝试根据前两个点去算递推。结果是经过了一番演草与计算,还是1分没有。
怎么办啊,又花了快两个小时,结果现在啥都没了,4页草稿纸白打。
没办法了,想暴力吧,T1的暴力可以考虑建图,这样的话能够 (O(n^2)) 算出来,有个30分。
T2直观的搞,只有 (n^2logn) 暴力求LCA了。
这个时候天真的我以为大家都一样难。
赛后发现
结果是和zyz拿了倒数,难的只有我俩。
1 T1 其实非常简单,我还在考虑这个相等的状态怎么存储,实际上我在暴力建图的时候应该发现的,他们可以都存到一个可以共同到达的rot上,也就是最前面的位置,但我当时在最后时刻只想着暴力了(然而标程真的2分钟就能打出来)。
2 T2 人均60-78,佛了,每次DFS把树扫一遍也挺直观啊?结果是这都没想到。
3 T3 得用到那个式子,但确实是不能容斥,带标号的二分图计数有板子,生成函数多项式啥的。。
技术总结
T1如同上边讲的,很快就能搞出来。
T2 的各种部分分都是那种,简简单单的小暴力,只是要点小转换,让答案体现在一个点是否作为LCA来做贡献。正解的话,需要较复杂的数据结构。实际上我比赛的时候从来没写出来过较大的数据结构。
T3 如同赛后发现所讲。有板子的。虽然这个二分图的边有三个状态,但大同小异。