学军11.29网络赛 题解&总结
前一小时被迫打OI赛制。后面自身心情原因打ACM赛制。
A太过毒瘤,在3h多才切。D暴力题恶心死人。
切ABC。后面两题甚至没有心情打部分分,所以在切了A之后我的比赛已经结束了。
300分整个机房最后一名(另外三位440,还有一位500拿rank1)
A
一开始就想到做到后面有循环节并且循环节是2。
但是在到循环节之前的过程一直不会做,后来发现直接暴力即可,不会TLE。
本来还看错题意以为题目求时间,一开始只会打60分部分分,对应样例之后一个\(k=1\)符合的同时\(v_1=1\),刚好对了这个样例。害得我迷惑了好久。当然这是自己的问题。
一个小细节,自己造数据在感觉可能出现错误的地方assert
了一下,搞了半天没有问题。后来实在忍不住重构代码,才意识到这个细节。所以重构代码永远滴神。
显然如果有两次连续的相向相遇,那么以后会如此循环。
追及的时候直接暴力即可。
B
这题应该放A吧!
但是我把AC程序交了之后大概1h才出结果,害得自己写了个checker将所有的数据都测了一遍。
可以发现一个长度为\(L\)的连续段贡献为\(\frac{L(L+1)}{2}\)。
每次找到一个最逼近\(m\)的,丢入一个连续段进去。
两个长连续段之间用一个字符隔开。字符轮换。自己写check证明不会挂。
C
这题竟然可以OEIS?
诚信比赛不干这些。
阳间做法:设\(i,j,k\)分别为三种颜色取值。保证\(i+j+k=n\),答案为\(\sum_{i,j,k} \binom{n}{i,j,k}2^{\frac{n^2-i^2-j^2-k^2}{2}}\)。
发现可以预处理\(i+j\)相同的计算。
阴间做法:dyp强行扩展到染任意种颜色的情况。大概是容斥选\(k\)条边,使得这\(k\)条边都满足两端点颜色相同,容斥系数为\((-1)^k\)。推若干条式子,最终可以得到一个\(O(n^2)\)的做法。也可以优化到\(O(n\lg n)\)。
D
恶心乱搞题。比赛时写着写着不想写下去。
乱搞方法多样,各种指数暴力直接过。
讲下ll的靠谱一些的做法:对于出现两次或以上的字母(至多\(7\)个)暴力枚举,剩下的DP。
E
题目本身好评,只是自己看错题意写了3k跑样例发现假了而已……
确实比T4优美,比赛时没有想出来是自己有问题。
正解简单自然:长链剖分。记下子树中深度为多少的点有多少个。对于每个点,枚举到它连的轻儿子的最长长链长度,用合并果子NTT计算相同深度的贡献。然后再计算它自身所在长链和祖先的贡献。祖先的贡献可以直接换根,先走入重儿子,将轻链暴力合并,走入轻儿子的时候,将这个轻儿子的贡献减去,并加上重儿子的轻儿子长链长度的贡献。
除了NTT外什么地方都是\(O(n)\)的。
真是一次体验不太好的比赛,但是菜是原罪,所以不管怎样终究是自己菜。
尽管如此也衷心希望学军多办些这样的比赛呢。
但不要出D这种题了,A题这样我也理解毕竟上次也是这样,但D题存粹恶心人。