开学第六周.ONE(区间DP)

news/2024/11/9 18:09:59

 不知不觉已经第六周了,感觉什么都没学到似的,老师讲的东西有的我现在还没消化,以至于我感觉已经跟不上老师的进度,这其实很悲哀,对于DP的有些东西我还是理解不了,为什么这个状态转移方程可以这样写?为什么可以这样找状态?为什么这个问题我没想到这样做?为什么这个细节我没想到?为什么我这样愚笨?   我尽力的使自己明白为什么。

背包问题老师也讲的差不多了,有时间补补关于背包的总结,今天来点新内容,关于区间dp。先写点,渐渐补充吧。

动态规划之区间DP专题

 

什么是区间DP

所谓区间dp,就是在一个区间上进行的dp, 一般通过将大区间分割成小区间进行dp。 
区间型动态规划,又称为合并类动态规划,是线性动态规划的扩展,它在分阶段地划分问题时,与阶段中元素出现的顺序和由前一阶段的区间中哪些元素合并而来有很大的关系。

 

区间动归状态转移方程及一般动规过程:

for k:=1 to n-1 do    //区间长度
  for i:=1 to n-k do     //区间起点
    for j:=i to i+k-1 do     //区间中任意点
      dp[i,i+k]:=max{dp[i,j] + dp[j+1,i+k] + a[i,j] + a[j+1,i+k]};

1. 状态转移方程字面意义:寻找区间dp[i,i+k]的一种合并方式dp[i,j] + dp[j+1,i+k],使得其值最大或最小。
2. 区间长度k必须要放到第一层循环,来保证方程中状态dp[i,j]、dp[j+1,i+k]值在dp[i,i+k]之前就已计算出来。
3. 其中a[i,j]+a[j+1,i+k]可以不要,也可以灵活多变,指的是合并区间时产生的附加值。

区间dp伪代码:


//mst(dp,0) 初始化DP数组

for(int i=1;i<=n;i++)

{

    dp[i][i]=初始值

}

for(int len=2;len<=n;len++)  //区间长度

for(int i=1;i<=n;i++)        //枚举起点

{

    int j=i+len-1;           //区间终点

    if(j>n) break;           //越界结束

    for(int k=i;k<j;k++)     //枚举分割点,构造状态转移方程

    {

        dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+w[i][j]);

    }

}

 


http://www.niftyadmin.cn/n/3620858.html

相关文章

Expert 诊断优化系列------------------内存不够用么?

现在很多用户被数据库的慢的问题所困扰&#xff0c;又苦于花钱请一个专业的DBA成本太高。软件维护人员对数据库的了解又不是那么深入&#xff0c;所以导致问题迟迟不能解决&#xff0c;或只能暂时解决不能得到根治。开发人员解决数据问题基本又是搜遍百度各种方法尝试个遍&…

训练总结 18.7.17 暑假训练第二天

今日完成题量两道题&#xff0c;真是越来越少了。 所谓的思维题&#xff0c;实在是想不上。今天那个图形题&#xff0c;推规律只能推出一半&#xff0c;不看题解完全做不出来&#xff0c;比较凉。

Azure 基础:用 PowerShell 自动登录

PowerShell 是管理 Azure 的最好方式&#xff0c;因为我们可以使用脚本把很多的工作自动化。比如把 Azure 上的虚拟机关机&#xff0c;并在适当的时间把它开机&#xff0c;这样我们就能节省一些开支&#xff0c;当然我们同时也为减少二氧化碳的排放做出了贡献&#xff01; Powe…

LeetCode 第657题 机器人能否返回原点

在二维平面上&#xff0c;有一个机器人从原点 (0, 0) 开始。给出它的移动顺序&#xff0c;判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R&#xff08;右&#xff09;&#xff0c;L&#xff08…

爱因斯坦难题

爱因斯坦曾经提出过这样一道有趣的数学题&#xff1a;有一个长阶梯&#xff0c;若每步上2阶&#xff0c;最后剩下1阶&#xff1b;若每步上3阶&#xff0c;最后剩2阶&#xff1b;若每步上5阶&#xff0c;最后剩下4阶&#xff1b;若每步上6阶&#xff0c;最后剩5阶&#xff1b;只…

laravel5.1 使用队列发送邮件

为什么80%的码农都做不了架构师&#xff1f;>>> 首先在.env文件下设定队列的驱动 QUEUE_DRIVER databaselaravel5.1提供了6种驱动,sync,databse,beanstalkd,sqs,iron,redis具体可以在官方手册查阅. 本次选用database作为驱动 php cli下执行 php artisan queue:tab…

P5676 [GZOI2017]小z玩游戏(tarjan+虚点优化建图)

LINK 若存在w[v]%e[u]0w[v]\%e[u]0w[v]%e[u]0 说明玩完游戏uuu马上可以玩游戏vvv,我们连上一条uuu到vvv的边 那么游戏能玩两次以上相当于在这个有向图中处于一个环,可以玩无限多次 直接上tarjantarjantarjan找环即可 但是这样连边是O(n2)O(n^2)O(n2)的,需要优化 我们建立…

『ACM C++』 Codeforces | 1003C - Intense Heat

今日兴趣新闻&#xff1a; NASA 研制最强推进器&#xff0c;加速度可达每秒 40 公里&#xff0c;飞火星全靠它 链接&#xff1a;https://mbd.baidu.com/newspage/data/landingsuper?context%7B"nid"%3A"news_11707429683828231737"%7D&n_type0&p_…