首页 > 其他分享 >区间dp模板

区间dp模板

时间:2023-01-15 06:22:37浏览次数:40  
标签:dpr minn tot 先手 dp 区间 dpl 模板

该死的csdn登陆不上去了,为了防止区间dp模板丢失,在这里再存一份

然后是左右取数字的问题,我记得20年的时候我应该看过这题,是有一个数列,前后取若干个数字,问先手能取最大值

那个时候没怎么看懂这个,今天做完题突然理解了,返回去看那个题

首先每次可以固定左右必选,那么左边必选的最大收益是当前的值 + 左边[l + 1,r]的最大值

那么右边同理,因为双方play optimally,所以我们不能光记录先手的最大值,还需要记录后手的最大值

如果先手play optimally,那么后手的最大值就是区间总价值 - 先手左/右最大值

然后我们在选的时候也要把这个考虑进去,因为和max是反复切换的,所以我们先手后手可以易手,如果先手取a[l]没有比后手取a[l]更优,那么此时易手,对右边同理

就有dp方程

dpl[l][r] = max(dp[l + 1][r] + a[l] , min[l + 1][r] + a[l])
dpr[l][r] = max(dpr[l][r - 1] + a[r], minn[l][r - 1] + a[r])

然后对于minn,我们可以用区间和 - 最大先手收益,就能获得后手收益

于是有
int tot = sum[r] - sum[l - 1];
minn[l][r] = min(tot - dpl[l][r], tot - dpr[l][r]);

合并

//区间dp
    rep(i, 1, n){
        rep(l, 1, n - i){
            int r = l + i;
            ll tot = sum[r] - sum[l - 1];
            dpl[l][r] = max(dpl[l + 1][r] + a[l], minn[l + 1][r] + a[l]);
            dpr[l][r] = max(dpr[l][r - 1] + a[r], minn[l][r - 1] + a[r]);
            minn[l][r] = min(tot - dpl[l][r], tot - dpr[l][r]);
        }
    }
    ll ans = max(dpl[1][n], dpr[1][n]);

总之如果找博弈类问题答案,输出赢还是输,那么不要陷入细枝末节的博弈中去,考虑怎么转移到必胜态,

对于找数值问题,我们可以先手后手同时计算维护,先手对自身和后手最大化,然后后手对先手留下的结果最小化,minmax交题

标签:dpr,minn,tot,先手,dp,区间,dpl,模板
From: https://www.cnblogs.com/tiany7/p/17053030.html

相关文章

  • bzoj 2554 Color 期望DP
    期望DP枚举最终能成为哪个颜色,把这个颜色看做白球,其余颜色看成黑球。最后分别把每种颜色的期望加起来就行。考虑当前有i个白球,全变成白球期望步数设为f[i]一次操作可能......
  • 网络流模板及易错点总结
    一、最大流#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintNN=300,MM=5e3+8,INF=0x7f7f7f7f;intn,m,s,t;intdis[NN];queue......
  • idea修改注释模板
    类头注释:打开file->setting->Editor->FilrandCodeTemplates->Includes->FileHeader 然后编辑你需要注释的内容,保存后,新建类时就会生效。......
  • 计数 dp 目录
    数え上げテクニック集笔记。引言OI中有三大专题:dp,数据结构,图论。而在这三大专题中,因为dp是从小问题的解法上升至大问题的解法的关键;所以dp,在这三大专题中,优先性是......
  • 区间异或和异或区间最大值异或区间最小值
    区间异或和异或区间最大值异或区间最小值关键分治思想。也可以选择固定左端点,然后选择右端点代码#include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f......
  • 动态dp
    两天时间学习了动态dp。题目洛谷P4719首先我们假设如果它是普通dp。设计状态\(f[i][0/1]\)表示以\(i\)为根的子树中选或不选\(i\)结点的最大独立集的值。状态转移\(f[......
  • Luogu7509 撕裂消除 - 期望dp -
    题目链接:https://www.luogu.com.cn/problem/P7509题解:设\(dp[i][j][0/1]\)表示考虑到第\(i\)个位置,已经形成了极大的\(j\)段,当前位置为0/1的期望值;\(g[i][j][0......
  • 通过tcpdump抓取lldp/cdp报文判断服务器上联网络配置
    在一般运维工作中,时常要检查服务器的网络配置,例如服务器有几个网卡,有没有做绑定,上联网络情况等。一般可以从以下几个方面判断:查看布线表查看CMDB搜索相关信息通过上行交换机......
  • 动态规划笔记(一):初识DP
    动态规划(DP)DP问题特征特征:重叠子问题、最优子结构、无后效性重叠子问题:计算大问题需要重复计算小问题,DP可以避免重复计算,代价是消耗更多的空间最优子结构:大问题的最优......
  • DP7361 是一款立体声六通道线性输出的数模转换器-兼容CS4361
    DP7361是一款立体声六通道线性输出的数模转换器,内含插值滤波器、Multi-Bit数模转换器、模拟输出滤波器,支持主流的音频数据格式。DP7361片上集成线性低通模拟滤波器和四......