zoukankan      html  css  js  c++  java
  • DP题

    P1896互不侵犯(状压)

    dp前先将所有满足条件的状态一一求出来,节省时空间

    三维数组f[i][j][k]存第i行状态为k,目前共j个将军

    行与行之间状态可以通过左右移匹配来查看是否符合条件


    P4187[USACO18JAN]Stamp Painting G

    思维线性dp

    要用前缀和数组辅助递推

    先把所有的颜色排列个数求出来(m^n)

    再减去不符合条件的个数

    不符合条件的即为没有任何一个连续k个相同颜色的排列

    前k-1个数字不受影响

    当数组滚动到i时且i>k,至多有j~i这一段k-1个有相同颜色,i不能和j-1相同颜色,所以i只有m-1种可能

    所以用前缀和数组pre[i-1]-pre[i-k],(j~i-1)的和乘(m-1)得解

    P3205 [HNOI2010]合唱队(区间dp)

    常规方式,从小范围到大范围

    f[i][j][0]表示从最后一次加左边的可能性,f[i][j][1]表示从最后一次加右边的可能性

    f[i][j][0/1]从f[i][j-1][1/0]和f[i+1][j][0/1]变化过来

    P1792 [国家集训队]种树

    反悔贪心(dp思想)

    优先队列处理输入的数

    从大到小取,每取一个旁边的数标记不能拿。

    在录入(左边点权+右边点权−当前点权)的一个id相同,值不同的新数,防止取两边比取该点更优

    再用链表维护

    P1043 [NOIP2003 普及组] 数字游戏

    常规区间dp,用前缀和维护

    f[l][r][m]意思是该区间分为m部分的最大/小值

    递推时模拟断点i,l-i为m-1部分,i+1-r为1部分。

  • 相关阅读:
    如何获取汉字对应的拼音
    php each()函数和list()函数
    php list()函数
    addslashes给预定义字符前面加上反斜杠
    array_filter() 过滤数组中的空白元素
    用.htaccess文件实现URL重写
    xml中实体引用
    onsubmit阻止表单提交
    php获取当前文件绝对路径
    array_merge() 函数的用法
  • 原文地址:https://www.cnblogs.com/konnyaku-yy/p/15500856.html
Copyright © 2011-2022 走看看