zoukankan      html  css  js  c++  java
  • DP例题整理

    AGC034E

    枚举最后停在rt点,转化有根树。
    策略一定是选取两个没有祖先关系的点同时向上走。可以用势能证明,如果有祖先关系,一加一减总势能不变,而我们要求总势能为0。
    然后这是一个模型,n个点在m个集合中,每次从不同集合中拿出两个球,那么有解的条件是n为偶数且sum-max>=max
    划分子阶段,假设在u点子树内抵消,设f[u]为u子树内最多消除多少对,可以把子树内的点x拆成dis(u,x)个操作,那么目的就是给操作两两抵消。
    在u点按不同儿子分集合,然后用结论尽可能抵消更优。
    剩下的可在非u点抵消,这些是我们已经dp出来的。
    最后在根节点判下合法更新答案,也就是sum/2。

    CF908G

    直接考虑每个数字的贡献,形式是一个x=10的多项式
    (Ans=sumlimits_{i=1}^{9}sumlimits_{j=i}^{9}w(j))
    后面那个东西是求[1,X]中所有数不小于i的数有多少个,可以数位dp

    AGC024F

    n很小,但似乎|S|很大。可以暴力枚举子序列,但是不能暴判。
    考虑构造一个子序列自动机,状态(S,T)表示当前有串S,后面要接T的子序列。由于n很小,状态数(O(n2^n))
    所以S是T的子序列当且仅当((phi,T)->(S,phi))
    由于是DAG,所以线性时间内dp下路径数即可。

    CTT2017某位歌姬的故事

    转化限制:等价于[l,r]内<=h且存在高度为h的点
    求出每个点的上界(up_i),可以发现答案内高度为h的点i满足(up_i=h)
    n很大,不能在原序列上dp,但是限制最多只有500个。
    拿出来单独dp

    暂没写完...

  • 相关阅读:
    SSD5_Optional Exercise 5分析
    SSD5_Optional Exercise 3分析
    SSD5_Optional Exercise 1 分析
    SSD5_Optional Exercise 4不会
    SSD5_ Exercise 2分析
    SSD5_Optional Exercise 2分析
    SSD5_Exercise 3分析
    SSD5_Recommended Exercise 4 分析
    2013蓝桥杯C语言本科组B
    hdu 1316 How Many Fibs?【JAVA大数】
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/12526000.html
Copyright © 2011-2022 走看看