苏州吴中网站建设,和田哪里有做网站的地方,单片机开发,全屋定制软件区间型DP是一类经典的动态规划问题#xff0c;主要特征是可以先将大区间拆分成小区间求解最后由小区间的解得到大区间的解。 有三道例题 一、石子合并 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆#xff0c;并将新…区间型DP是一类经典的动态规划问题主要特征是可以先将大区间拆分成小区间求解最后由小区间的解得到大区间的解。 有三道例题 一、石子合并 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆并将新的一堆的石子数记为该次合并的得分。 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 二、能量项链 在Mars星球上每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子这些标记对应着某个正整数。并且对于相邻的两颗珠子前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样通过吸盘吸盘是Mars人吸收能量的一种器官的作用这两颗珠子才能聚合成一颗珠子同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m尾标记为r后一颗能量珠的头标记为r尾标记为n则聚合后释放的能量为m*r*nMars单位新产生的珠子的头标记为m尾标记为n。 需要时Mars人就用吸盘夹住相邻的两颗珠子通过聚合得到能量直到项链上只剩下一颗珠子为止。显然不同的聚合顺序得到的总能量是不同的请你设计一个聚合顺序使一串项链释放出的总能量最大。 例如设N44颗珠子的头标记与尾标记依次为(23) (35) (510) (102)。我们用记号⊕表示两颗珠子的聚合操作(j⊕k)表示第jk两颗珠子聚合后所释放的能量。则第4、1两颗珠子聚合后释放的能量为 (4⊕1)10*2*360。 这一串项链可以得到最优值的一个聚合顺序所释放的总能量为 ((4⊕1)⊕2)⊕310*2*310*3*510*5*10710。 三、关灯问题 某一村庄在一条路线上安装了n盏路灯每盏灯的功率有大有小即同一段时间内消耗的电量有多有少。老张就住在这条路中间某一路灯旁他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯。 为了给村里节省电费老张记录下了每盏路灯的位置和功率他每次关灯时也都是尽快地去关但是老张不知道怎样去关灯才能够最节省电。他每天都是在天亮时首先关掉自己所处位置的路灯然后可以向左也可以向右去关灯。开始他以为先算一下左边路灯的总功率再算一下右边路灯的总功率然后选择先关掉功率大的一边再回过头来关掉另一边的路灯而事实并非如此因为在关的过程中适当地调头有可能会更省一些。 现在已知老张走的速度为1m/s每个路灯的位置是一个整数即距路线起点的距离单位m、功率W老张关灯所用的时间很短而可以忽略不计。 请你为老张编一程序来安排关灯的顺序使从老张开始关灯时刻算起所有灯消耗电最少灯关掉后便不再消耗电了。 这三道题中前两道是几乎一样的首先他们都是环型所以先要断环为链将环复制两遍成链对原来的区间进行操作这样我们在一些边界上就可以重复利用链的信息了。而这类题通用的解法一般是用f[i][j]表示i—j这个区间的最优值而枚举顺序一般是最外层枚举区间长度第二层枚举区间起点最后一层枚举区间内的分界点这两道题是先合并那两个子区间的再合并成一个区间因为他们都是两个区间合并成一个区间的问题最优值就从这些子区间的最优值转移过来就行了。 而第三题就稍有不同但对于子问题的构建没有太大区别f[i][j]表示关闭i-j区间的灯所消耗的最少电能然后这个题有个特点就是他关完灯一定在区间的左端或右端的这个性质从他所在的起点开始因为起点的值是0这是确定的一层层的向外扩展每次只比上次多关一盏这样就可以慢慢的求出答案了。 总得来说这类dp最重要的是将大区间拆分成小区间求解最后由小区间的解得到大区间的解而且对于两个子区间和并成一个大区间的问题枚举顺序往往是最外层枚举区间长度第二层枚举区间起点最后一层枚举区间内的分界点例题还有括号序列除此以外一般和区间的端点有关系如山区建小学。转载于:https://www.cnblogs.com/hyl2000/p/6060342.html