• 「考试总结」2021-06-17 模拟 1


    圆弧

    枚举颜色 (1) 选择的一对点来断环成链

    考虑设计一个求最大值和方案的 (dp:f[i]) 表示到第 (i) 个点的最大能配对多少个颜色,(dp[i]) 表示在这个配对数下有多少个方案

    记录每个点颜色上一次出现的次数,并把两个 (1) 颜色的中间之类的位置的 (dp) 都置成 (0),每次从 (pre[i]) 转移即可

    整除

    先把 (x=1) 的判掉,注意这里应该是系数和是 (m) 的倍数

    使用等比数列求和公式把原多项式乘上 (x-1),然后使用多项式取模把原多项式次数降到 (m) 以下,设此时 (R(x)=sum a_i x^i)

    关于多项式取模的部分,对于每个 (a_ix^i),给 (x^{i\%m}) 贡献 (a_i) 的系数

    此时如果余多项式为 (0) 则有无穷解,反之解不会大于 (max{a_i})

    那么题目转化为带入一个 (x) 判断多项式模 (x^m-1) 是不是满足系数均为 (0,-x+1,x-1)

    后面两个系数的取值可以使用等比数列求和得到一个倍数的形式

    使用 (set) 找到当前所有大于等于 (x) 的系数,按照高精度数计算的思想进行 "进位" 即可

    考虑到 (sum a_i)(O(n)),不断减得到一个调和级数的复杂度,套上 (set),那么总复杂度 (Theta(nlog^2n))

    词典

    考虑到这个模式很像一个 (trie) 树删儿子的模型,那么设计一个 (f_i,g_i) 表示左/右子树选 (i) 个的最小代价,转移想想就有了

    考试的时候看着 (O(n)) 的部分分就打了个表发现转移点最多差 (1),卡了卡空间得到了 (50)

    大力打表发现 (f(i)-f(i-1)) 单调不增而且都非常小,那么盲猜可以预处理每个 (x)(f(n)-f(n-1)=x) 最大的 (n),查询时二分

    • (f(n)) 是凸函数:使用右下凸包和右下凸包的闵可夫斯基和就是 (min-add) 卷积

    • (f(n)-f(n-1))(log^2n) 级别的数,这个貌似用二叉树对应深度上的点就能证明

    那么可以倍增套二分得到 (x) 的界点,注意实现的时候需要 (1.5) 倍倍增,三分 (f(i)) 的转移点的时候把下界设成 (frac i3)

    做法貌似神乎其神,其实是一点没懂……学到了 (1.5) 倍倍增来卡常?

  • 相关阅读:
    队列数据结构与算法JavaScript描述(5)
    栈数据结构与算法Javascript描述(4)
    散列数据结构与算法JavaScript描述(8)
    Evevt Loop、任务队列、定时器等
    OSGi初始篇
    应用服务平台与应用服务器
    数据源相关规范整理
    新手入门:教您最优的J2EE学习经验和流程
    TableView的使用
    Strategy
  • 原文地址:https://www.cnblogs.com/yspm/p/14902511.html
Copyright © 2020-2023  润新知