• 山东省队集训整理


    (LOJ6059)

    首先考虑一个数位 (DP) 的思路。(f_{i , j , k}) 表示前 (i) 位 , 模 (p) 的值为 (j) , 每位之和为 (k) 的方案数。
    发现 (n) 很大 , 那么倍增优化即可。
    时间复杂度 : (O(mplogmlogn))

    (LOJ6060)
    记整个集合的异或和为 (S)
    对于 (S) 中为 (0) 的位 , 我们希望其在两个集合中都是 (1) , 而对于 (S) 中为 (1) 的位就不需要考虑了 , 但按照题目中所说的 , 要使第 (1) 个集合的异或和尽可能小。
    因此将为 (0) 的位从大到小放在前面 , 为 (1) 的位从大到小放在后面 , 插入线性基即可。
    时间复杂度 : (O(NlogN))

    (LOJ6062)
    考虑霍尔定理 , 线段树维护即可。
    时间复杂度 : (O(NlogN))

    (LOJ6066)
    首先二分答案。
    将树写成括号序列后用可持久化线段树维护哈希值。 并使用平衡树记录哈希值的集合。
    时间复杂度 : (O(Nlog^2N))

    (LOJ6068)
    考虑行联通块对列联通块连边 , 这样建出了一个二分图模型。
    将行 / 列的边权定义为差分值 ({i(i + 1)} over {2}) - ({i(i-1)} over {2}) = (i)
    直接运行费用流即可。
    时间复杂度 : (O(CostFlow(N ^ 2 , N ^ 2)))

    (LOJ6066)
    首先得到一个排列 (P) , 设 (S = sum{max(P_{i - 1} , P_{i})}) , 那么 (S + 1) 就是紧密排列起来的长度。
    还剩下的 (l - (S + 1)) 个格子 , 将其插入在剩余的空位中 , 其方案数为 ({l - S - 1 + n choose n})
    因此要求的是 (S = k) 的方案数。
    这是个经典问题 , 设 (dp_{i , j , k}) 表示前 (i) 个数 , 整个序列分为 (j) 个联通块 , 排列总长度为 (k) 的方案数。 直接转移即可。
    现在问题转化为求 ({L choose 0..n}) , 注意到 (L) 很大 , 但 (n) 很小 , 因此矩阵快速幂即可。
    时间复杂度 : (O(N ^ 3logL))

    (LOJ6072)
    生成树计数 , 二项式反演 , 折半搜索。
    具体不赘述了。 时间复杂度 : (O(2 ^ N(n+m)))

  • 相关阅读:
    EntityFramework4.5使用Expression类创建动态查询及动态查询导航属性
    EF 5.0 帮助类
    EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生
    EF框架学习手记
    Entity Framework 学习
    C#特性-表达式树
    LINQ to SQL 运行时动态构建查询条件
    一点css 基础
    JQuery 判断复选框是否选中
    Asp.Net Server.MapPath()用法
  • 原文地址:https://www.cnblogs.com/evenbao/p/13709284.html
Copyright © 2020-2023  润新知