zoukankan      html  css  js  c++  java
  • loj「LibreOJ NOI Round #2」不等关系

    题意

    略。

    题解

    我们暂且先忽略掉所有<
    考虑将>看做一个限制“1”,要求的就是111...111
    那么,容斥一下,就是:
    111...111
    = 111...11? - 111...110
    = 111...11? - 111...1?0 + 111...100
    = ...
    = 111...11? - 111...1?0 + 111...?00 - ...
    考虑类似111?000这种怎么求?
    (dp_i)表示考虑前(i)>之前的所有符号(包括<),满足的序列的种类数。


    转移方程:

    [dp_i = [s_i = '>'] sum_{j < i} [s_j = '>'] {(-1)} ^ {cnt_i - cnt_j - 1} * inom{i}{i - j} * dp_j ]

    其中(cnt_i)代表的是第(i)位置之前有多少个>,组合数代表取出(i)个数的(i - j)个放在问号后面的位置上,由于问号前后序列都是单调的,但是对两个序列交界处没有要求,所以方案数就是一个组合数。
    把式子变形一下,就是

    [frac{dp_i}{i!} = [s_i = '>'] sum_{j < i} [s_j = '>'] frac{dp_j}{j!} * {(-1)} ^ {cnt_i - cnt_j - 1} * frac{1}{(i - j)!} ]

    做分治ntt即可。
    代码he的,不好意思贴了。

  • 相关阅读:
    List集合
    类加载机制
    代码优化
    JVM字节码
    Tomcat优化之Apache Jmeter压力测试工具
    Tomcat优化
    JVM垃圾收集器
    lambda表达式
    java 内部类
    java多线程3种方式
  • 原文地址:https://www.cnblogs.com/psimonw/p/11529530.html
Copyright © 2011-2022 走看看