zoukankan      html  css  js  c++  java
  • 另一道不知道哪里来的容斥题

    题意:给出一个012序列,进行m次操作,每次选择一个区间并把它变成全0。
    要求序列上的2最终还是2,序列上的1最终变成0。

    考虑只有0和2怎么做。
    求出有多少种区间的选择方法数x。
    ans=x^m。
    带上1以后,有一个暴力的做法,直接容斥那些1最后没有变成0,然后把这些看成2来做。
    复杂度O(2^n)。
    有一个更优秀的做法,可以用dp去算这个容斥系数。
    dp[i][k],k那一维是存了有多少个可行区间,显然K<=n^2。
    每次转移的时候
    遇到0直接复制。
    遇到1决策是否把它变成2,转移的时候乘上-1。
    遇到2考虑上一个2在哪里。
    最后每一项直接m次方加起来即可。
    复杂度O(n^4)。

  • 相关阅读:
    Python之sys & os
    1161
    1142
    P1599 货币
    P1547逆转,然后再见
    P1629八
    P1753HackSon的趣味题
    Problem 2233 ~APTX4869
    1269
    1091. Tmutarakan Exams
  • 原文地址:https://www.cnblogs.com/Creed-qwq/p/10343938.html
Copyright © 2011-2022 走看看