zoukankan      html  css  js  c++  java
  • 动态规划杂题选记

    1.P3092 [USACO13NOV]No Change G

    简单状压,(f[S]) 表示当前状态为 (S) 能够购买的最远商品编号。

    转移时二分当前的硬币最远能够买到哪里。

    (f[S]=n) 时统计答案。

    2.P3126 [USACO15OPEN]Palindromic Paths G

    数字三角形模型,可以记 (f[k][i][j]) 表示总步数为 (k),左上角的人横坐标为 (i),右下角为 (n-j) 的路径数量。

    转移就从两个人的两种方向转移就好。

    发现 (k) 只从 (k-1) 转移,可以滚掉。

    是回文串当且仅当两者重合,即 (f[i][i])。加强版记得判断 (n+m) 的奇偶性。

    3.P1437 [HNOI2004]敲砖块

    转移是从上一层的后一块砖来的,所以我们考虑倒序枚举转移。

    (f[i][j][k]) 表示当前敲到了第 (i) 列第 (j) 行,共敲了 (k) 块砖的最大收益。

    那么转移有:

    [f[i][j][k]=max_{lin[j-1,n-i]}(f[i+1][l][k-j]+sum_{p=1}^ja[p][i]) ]

    因为当前列 ([1,j]) 的砖都要敲完,可以维护一个前缀和 (O(1)) 做。

    同时保证上一列至少敲到 (j-1),这列可以敲 (j) 就可以了。

    4.P6564 [POI2007] 堆积木KLO

    比较巧妙的状态设计及优化。

    直接给出:(f[i]) 表示强制让 (i) 归位的最大价值,那么可以枚举一个 (j),保证 (j)(i) 都归位。

    [f[i]=max(f[j])+1 ]

    其中 (j) 满足 (j<i)(a[i]>a[j])(a[i]-a[j]leqslant i-j)

    那么这看起来很三维偏序,cdq?

    但仔细一想,(i-a[i]geqslant j-a[j]),再保证了 (a[i]>a[j]) ,第一维就自然满足了。

    这就变成了二维偏序,树状数组即可。

  • 相关阅读:
    jackson自动将东八区时间转成标准时间
    开发项目和所用时间 感想
    自我介绍
    后缀数组模板
    lucas模板
    后缀数组da3模板
    cf#366....
    第1月2周1天
    第1月2周2天
    第1月1周1天
  • 原文地址:https://www.cnblogs.com/Alansp/p/13922339.html
Copyright © 2011-2022 走看看