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部分。

  • 相关阅读:
    师弟大喜之日,送上一幅对联 求横批
    漫画:Google 走了
    产品研发流程改进
    Outlook2010 Bug 一则
    Android 手机用户版本比例
    CDMA 短信中心号码
    UIM卡 PIN 码特点
    [Accessibility] Missing contentDescription attribute on image
    java打印函数的调用堆栈
    android中解析Json
  • 原文地址:https://www.cnblogs.com/konnyaku-yy/p/15500856.html
Copyright © 2011-2022 走看看