一.区间DP 顾名思义区间DP就是在区间上进行动态规划,先求出一段区间上的最优解,在合并成整个大区间的最优解,方法主要有记忆化搜素和递归的形式. 顺便提一下动态规划的成立条件是满足最优子结构和无后效性! 二.经典例题分析: 1.石子合并: 一条直线上有N堆石子,现在要将所有石子合并成一堆,每次只能合并相邻的两堆,合并花费为新合成的一堆石子的数量,求最小花费. 分析: 一般看到最小,最短这样的字眼,可以往动态规划的方向思考,显然当我任选两堆合并时,只会影响下一次选择,不会对再后来的选择有影响,这时…
有 N 堆石头排成一排,第 i 堆中有 stones[i] 块石头. 每次移动(move)需要将连续的 K 堆石头合并为一堆,而这个移动的成本为这 K 堆石头的总数. 找出把所有石头合并成一堆的最低成本.如果不可能,返回 -1 . 输入:stones = [3,2,4,1], K = 2 输出:20 解释: 从 [3, 2, 4, 1] 开始. 合并 [3, 2],成本为 5,剩下 [5, 4, 1]. 合并 [4, 1],成本为 5,剩下 [5, 5]. 合并 [5, 5],成本为 10,剩下…
There are N piles of stones arranged in a row.  The i-th pile has stones[i] stones. A move consists of merging exactly K consecutive piles into one pile, and the cost of this move is equal to the total number of stones in these K piles. Find the mini…
题意: 给你一个多边形(可以看作n个顶点,n-1条边的图),每一条边上有一个符号(+号或者*号),这个多边形有n个顶点,每一个顶点有一个值 最初你可以把一条边删除掉,这个时候这就是一个n个顶点,n-2条边的图 如果顶点i和j之间有边,那么你可以把i点和j点合并成一个点,把这个点替换掉i.j两个点,这个新点的值是i+j 或者 i*j (这个是要看连接i和j两点的边上的符号) 经过若干次操作之后剩下一个点,这个点的值最大是多少 题解: 这道题目和石子合并题目很相似,这里先说一下石子合并 题目: 有N…
题目网址:https://www.luogu.com.cn/problem/P1880 题意是:给定一个序列,最小规则是相邻两个值的合并,开销是他们的和,将整个序列合并成一个值的情况下,求解该值的最小值和最大值. 代码如下: #include<bits/stdc++.h> using namespace std; typedef unsigned int ui; typedef long long ll; typedef unsigned long long ull; #define pf p…
区间DP,是一类具有较为固定解法的DP,一般的思路都是: first.初始化区间长度为1的情况(一般区间长度为1的较易于初始化) second. for(枚举区间长度2~n){ for(枚举左端点){ j=i+len-//记录右端点 for(枚举断点){ //枚举断点后一般是比较以哪个断点分开最优(一般是比较最大或最小) } } } end.区间DP的特点: 合并:即将两个或多个部分进行整合,当然也可以反过来,也就是对一个问题分解成两个或多个部分. 特征:能将问题分解为两两合并的形式: 求解:对…
也写了好几天的区间DP了,这里稍微总结一下(感觉还是不怎么会啊!). 但是多多少少也有了点感悟: 一.在有了一点思路之后,一定要先确定好dp数组的含义,不要模糊不清地就去写状态转移方程. 二.还么想好...想到了再加上去.... 之前也看了别人的总结,也给出了不少区间DP的模板.这里我也贴一下基本的模板: 区间DP模板 ; len < n; len++) { //操作区间的长度 ; i+len <= n; i++) { //始末 int j=i+len; //检查是否匹配(非必须) for (…
You Are the One Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3348    Accepted Submission(s): 1524 Problem Description The TV shows such as You Are the One has been very popular. In order to m…
男神的礼物 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1131 Description Lweb学长是集训队里公认的男神.有一天他要给美美的学姐姐准备礼物. Lweb学长可是会魔法的哟.为了准备一份礼物,男神要加工n份材料.每一次只能加工相邻的材料. 当男神加工两个魔法值为a,b的材料,男神都要消耗a*b的体力,同时在这个地方合成出魔法值(a+b)0的材料. 男神为了能节…
P1040 加分二叉树 题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下: subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数. 若某个子树为空,规定其加分为1,叶子的加分就是叶节点本身的分数.不考虑它的空子树. 试求一棵符合中序遍历为…