• 「考试」省选80


    T1
    仓鼠讲的(dp)嵌套原题。
    考虑对于一个确定的(T,V)如何(check)合法。
    (dp[i][a][b][c][d])为最高的前(i)位,(x)是否触及上界/下界,(y)是否触及上界/下界。
    那么我们把这个状态压一下。
    (dp[i][S])为所有可以由状态的集合(S)得到的(V)的个数。
    那么就可以转移了。
    复杂度是(O(602^{16}2^6))
    (if)剪掉大量的枝。

    T2
    按照步子分块。
    小于等于(B)的部分我们开(B)个线段树存,打整体加法标记。
    大于(B)的部分我们直接暴力模拟,用一个树状数组存,每次把位置大于(1e5)的跳蚤舍弃掉。
    考虑复杂度,是(O(BQlogQ+frac{Q}{B}QlogQ))
    这样的话我们的(B)(sqrt{Q})比较优秀,复杂度就是(O(Qsqrt{Q}logQ))得了。

    T3
    很久之前做的状压题的正解打法。
    我们把状态都找出来,然后发现(n=3)的时候有一个情况很特殊,第一格和第三格不属于同一个连通块和属于同一个连通块,这样要区分开。
    最终状态一共有9个。
    然后对于这些状态我们发现(dp)的转移可以用转移矩阵来表示,其中矩阵的每一个元素都是一个单项式。
    这样我们的(dp)定义变成多项式。
    然后发现直接乘复杂度爆炸了。
    我们分别带入单位元然后做矩阵快速幂求出点值,然后再逆向(IDFT)插回(dp)数组定义的多项式就可以了。

  • 相关阅读:
    以查询功能谈下,三层架构中的工厂模式与其中反射的应用
    结对编程
    第四周周结
    知识思考
    自我介绍
    本周开发工作及内容
    第三周周结
    启航
    如何写出健壮的Java代码
    CentOS x64上Matlab R2015b的镜像安装方法与卸载
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12773899.html
Copyright © 2020-2023  润新知