zoukankan      html  css  js  c++  java
  • ARC115E

    第一次遇到容斥与线性 DP 的结合!/se


    正难则反,总方案数是 (prod a_i),要减去至少对一个 (i)(X_i=X_{i+1})(X) 的数量。

    这玩意就是个显然的容斥了(现在想起来,容斥正是一种特殊的「先算混合物,然后除杂」的思想)。可以把对 (i) 满足的看成一个集合,那么要求的就是这些集合的并的大小。而这个 (2^{?}) 个集合的大小都是可以显式求的,对于若干个 (i) 的并,设它们把位置们连接成了若干个极大的区间 ([l_i,r_i]),那么答案就是 (prodminlimits_{j=l_i}^{r_i}{a_j})

    不难发现,若分成 (x) 个区间,就是有 (n-x) 个连接处,贡献就是 ((-1)^{n-x+1})。然后这玩意算出来是作为减数,贡献就是 ((-1)^{n-x}),对于「正难则反」中的总方案数,就是分成 (n) 个区间,贡献就是 (1)

    那么这个指数级别个集合的并的贡献和该怎么搞呢。它是一个一个区间地乘上去的形式,容易想到线性 DP:把 ((-1)^{n-x})((-1)^n) 提出来,那么每多一个区间就多个 (-1) 的贡献:(dp_i=-sumlimits_{j=1}^iminlimits_{k=j}^i{a_k}dp_{j-1})。这个就很好处理了,单调栈随便做。

    code

    珍爱生命,远离抄袭!
  • 相关阅读:
    汉诺塔
    排列算法
    线程的实现方式以及各自优缺点&lock比synchronized优势
    事务的隔离级别通俗演义
    JDBC 的Statement&preparedStatement&CallableStatement区别
    JVM工作原理浅析
    java中的超类是什么
    Java之构造器的作用
    Java构造器和方法的区别
    mybatis批量插入报错
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/solution-arc115e.html
Copyright © 2011-2022 走看看