zoukankan      html  css  js  c++  java
  • 省选模拟80

    A. 数字

      dp套dp经典题?

      考虑枚举一个$x &y$的值,如何检验这个值是否可能被拼出来。

      那么简单的想法就是暴力dp,只要表示出与边界的大小关系就可以转移。

      那么考虑同一位上dp只有16种不同的状态,给这16种状态的dp值压在一起就可以得到数的数量。

      复杂度看起来很高,但是跑不满。

    B. 跳蚤

      发现值域很小,然后就开始想一些奇怪的东西了。

      考虑对于$t$较大的点,如果暴力维护,那么每个点最多跳根号次就无法再造成贡献。

      对于较小的点,由于种类不会很多,所以可以对于每个开数据结构暴力维护。

      自然的想法是维护线段树或者树状数组,然后发现log在根号外面了,目测会tle(实测没事)。

      然后发现较大的修改次数多,查询次数少,所以分块维护,然后调块长可以做到log在根号里面。

      然后发现较小的实际上也可以,查询次数多,修改次数少,那么同样可以分块维护。

      这样就做到了不带log的复杂度(实测最慢)。

    C. 棋盘

      一个显然的想法是状压dp,然后发现复杂度死了。

      然后考虑用生成函数来优化。

      那么只要求出来整个dp数组的生成函数即可,考虑代入点值然后插值出系数求解。

      自然的想法就是代入单位根,然后IDFT求出系数。

      然后只要求出来点值即可,发现点值的转移式可以用矩阵来优化。

      然后就没了。

  • 相关阅读:
    Codeforces 1322B
    面向对象案例
    0428面向对象2.0
    0427 面向对象初识
    0427数组相关思想
    0426数组操作
    Eclipse使用技巧
    数组汇总0426
    0424数组练习
    数组习题练习0424
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12775651.html
Copyright © 2011-2022 走看看