zoukankan      html  css  js  c++  java
  • 2018 牛客多校 3

    Problem A

    DP,输出路径的时候减下去就可以了。

     

    Problem B

    如果一个点度数 $<= 2$,那么这个点肯定会被删掉。

    考虑每个度数 $>=  3$的点为根并且不选这个根的情形,假设这个点有$sz$个儿子。

    如果我在$sz$个分支里面只有 $<= 2$个分支里面的点被选择了。

    那么首先其他子树肯定会被删光,然后剩下这两个子树。

    到最后这个点肯定会被删除(纸上画一下很明白的)

    所以这个点对答案的贡献为

    $all - $只选一个子树里面的点方案数 - 只选两个子树里面的点的方案数

    那么枚举哪两个子树被选定再减去就可以了。

    但是这个减的过程,每个只选一个子树里面的点方案数都被重复减去了$sz - 1$次

    所以得加回来。

    然后答案还得减去只选一个子树里面的点方案数。

    所以加回来的时候加上$sz - 2$倍的只选一个子树里面的点方案数就可以了。

     

    Problem C

    $splay$一波带走,$rope$应该也行。

     

    Problem D

    先解密下,把真正要处理的两个字符串弄出来。

    然后这个其实相当于求字符串匹配的变种。

    如果两个字符串(长度相等)能够匹配,

    那么必须满足

    $(a_{i} - a_{j})^{2} * ((a_{i} - a_{j})^{2} - 1) = 0$

    $(a_{i} - a_{j})^{4} - (a_{i} - a_{j})^{2} = 0$

    $a_{i}^{4} - 4a_{i}^{3}b_{i} + 6a_{i}^{2}b_{i}^{2} - 4a_{i}b_{i}^{3} + b_{i}^{4} - a_{i}^{2} + 2a_{i}b_{i} - b_{i}^{2} = 0$

    那么做$4$次NTT再把剩下的一些无需卷积求的项加起来就可以了。

    如果结果等于$0$那么这个位置就可以匹配。

     

    Problem E

    直接哈希一波带走

     

    Problem F

    如果子串和为$0$那么返回$0$,是$15$的倍数(大于$0$)则返回$15$。

    否则返回对$15$取模的余数

    搞出那个结论之后就是线段树的常规操作。

    时间复杂度$O(nlogn * 16 * 16)$

    (如果没有更新复杂度应该可以减少一个$16$?)

     

    Problem G

    令$f(x)$表示距离最小距离至少为$x$的方案数,那么答案为$f(x) - f(x + 1)$

    考虑一条链的情况,如果一个点跟前面$x$个颜色都不能相同,

    那么这个点的选择有$all - x$种。

    然后树上的情况其实也差不多,那么用广度优先搜索标记类比链上染色的过程,

    然后判断有多少个点不能跟当前点颜色重复即可。

    时间复杂度$O(n^2)$

     

    Problem H

    签到题吧

    Problem I

    Problem J

     

  • 相关阅读:
    剑指offer-二维数组中的查找
    TF-IDF(term frequency–inverse document frequency)
    Java实现中文字符串的排序功能
    当前课程
    【R】资源整理
    CentOS相关
    【转】Setting up SDL Extension Libraries on MinGW
    【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
    【转】Setting up SDL Extension Libraries on Code::Blocks 12.11
    【转】Setting up SDL Extension Libraries on Visual Studio 2019 Community
  • 原文地址:https://www.cnblogs.com/cxhscst2/p/9385357.html
Copyright © 2011-2022 走看看