zoukankan      html  css  js  c++  java
  • 国庆清北 DP

    Day4 DP
    1.区间DP
    合并傻子
    N个矩阵,n0*n1 n1*n2 ....nN-1*nN
    找到一个做乘法的顺序,使得运算次数最少
    n*m m*k O(n*m*k)
    数据化
    f[l][r]第l个到第r个做完
    f[l][l] = 0
    枚举最后一个乘法是哪个乘法,分界点
    f[l][r]=min{f[l][k]+f[k+1][r]+n[l-1]*n[k]*n[r]}
    n[i-1]第i个矩阵的行数,n[i]列数
    ans=f[1][n]

    最外层枚举的是区间长度
    for i
    for j
    for k ×
    从2开始枚举长度,

    O(n^3)
    2.树形DP
    f[i]表示 以i为根的子树的信息
    枚举所有儿子,合并儿子信息
    f[i]=sigma f[j]
    j∈son{i}
    O(n) 所有点儿子个数之和
    叶子节点往上DP
    dis(i,j) 从i到j距离
    求所有点之间距离
    f[i]表示从i到自己子树里面所有点之和
    f[i]=sigma f[j]+sz[j]
    j∈son{i}
    对于i到所有点的距离之和
    在子树 f[i]
    不在子树 祖先
    别的子树
    i是1的儿子
    无论怎么走,都经过根
    f[1]-f[i]+sz[i]//刨掉i子树
    f[1]-f[i]+sz[i]+sz[1]-sz[i]//多走一步
    f[1]-f[i]+sz[i]+sz[1]-sz[i]+f[i]//加上子树内
    i不是1的儿子
    都经过fa[i]=k
    已经算过
    f[i]子树内 sz[i] g[i]子树外 f[i]+g[i]???????
    3.数位DP
    l,r问从l到r有多少个数 r-l+1
    一位一位的填,从高位到低位填
    f[i][j][k] i从高位到低位,已经填到了第i位,
    j 0/1变量 j=0 18->i已经满足>l j=1 这几位和l一样
    k 0: 18->i已经满足<r 1: =r
    f[i-1] j=0,k=0 0~9随便填
    j=1,k=0 l的i-1位<填的数<9
    .
    .
    f[i][j] i表示从高到低填到第几位
    j 0/1 <x =x
    l<= <=r --> !<=(l-1) && <=r 前缀和思想
    windy数
    幸运数字
    4.状压DP
    n个数 1,2,3,4,5....n
    能组成多少个不同的排列
    f[s],n个东西选还是没选用一个数来表示
    转移:枚举下一个数要选什么
    i 0->n-1
    if((s>>i)&1==0) i个东西没选
    f[s|(1<<i)]+=f[s]
    ans=f[(1<<n)-1]
    状压复杂度至少2^n 状态2^n
    n在22,23左右
    从一号点出发,所有点走一边,走的最小距离这和 旅行商问题
    爆搜搜不过
    枚举下一个点走什么
    f[s]=
    f[s|(1<<i)]
    不知道从哪个点走过来
    f[s][j]最后停在j的最短距离
    f[s|(1<<i)][i]=f[s][j]+dis(i,j) //s,i,j????
    O(n^2*2^n)
    售货员的难题
    5.插头DP ×
    6.其它DP 90%

  • 相关阅读:
    chrome浏览器解析xml
    CuteEditor报错 空引用错误
    猫哥网络编程系列:HTTP PEM 万能调试法
    猫哥网络编程系列:详解 BAT 面试题
    全新 Mac 安装指南(编程篇)(环境变量、Shell 终端、SSH 远程连接)
    全新 Mac 安装指南(通用篇)(推荐设置、软件安装、推荐软件)
    魅族手机浏览器兼容性调优最佳实践
    使用 nvm 管理不同版本的 node 与 npm
    一种让 IE6/7/8 支持 media query 响应式设计的方法
    排列组合算法的javascript实现
  • 原文地址:https://www.cnblogs.com/lcan/p/9742856.html
Copyright © 2011-2022 走看看