zoukankan      html  css  js  c++  java
  • 学军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} inom{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(nlg n))


    D

    恶心乱搞题。比赛时写着写着不想写下去。

    乱搞方法多样,各种指数暴力直接过。

    讲下ll的靠谱一些的做法:对于出现两次或以上的字母(至多(7)个)暴力枚举,剩下的DP。


    E

    题目本身好评,只是自己看错题意写了3k跑样例发现假了而已……

    确实比T4优美,比赛时没有想出来是自己有问题。

    正解简单自然:长链剖分。记下子树中深度为多少的点有多少个。对于每个点,枚举到它连的轻儿子的最长长链长度,用合并果子NTT计算相同深度的贡献。然后再计算它自身所在长链和祖先的贡献。祖先的贡献可以直接换根,先走入重儿子,将轻链暴力合并,走入轻儿子的时候,将这个轻儿子的贡献减去,并加上重儿子的轻儿子长链长度的贡献。

    除了NTT外什么地方都是(O(n))的。


    真是一次体验不太好的比赛,但是菜是原罪,所以不管怎样终究是自己菜。

    尽管如此也衷心希望学军多办些这样的比赛呢。

    但不要出D这种题了,A题这样我也理解毕竟上次也是这样,但D题存粹恶心人。

  • 相关阅读:
    Vue 单向数据流&双向数据绑定原理
    Arguments对象
    类数组对象(array-like objects)
    ...theArgs剩余参数
    vue 深度选择器/deep/报错(标红)
    修改mandMobile下拉菜单样式
    PC端input maxlength 失效问题
    el-input 正则限制输入为非负整数
    Mac鼠标左右键都是右键
    Vue双向数据绑定简易实现
  • 原文地址:https://www.cnblogs.com/jz-597/p/14059319.html
Copyright © 2011-2022 走看看