第一开始想着枚举根节点,然后记忆化搜索。。结果TLE,最后还是看了一眼题解瞬间明白了。。唉,还是思维太局限了由于数据是按照从小到大排列的,可以自然地组成一颗二叉排序树。设dp[i][j]是区间[i,j]的元素可以组成的BST的最小值,则大区间的结果和根节点以及小区间的结果有关系,很明显区间DP,转移...
分类:
其他好文 时间:
2015-09-23 10:08:38
阅读次数:
222
题意:给定n个狼的战斗力,并且每个狼的战斗力还需要加上相邻的两个狼的额外的攻击力。当把这个狼杀死之后,它的额外的战斗力就不会给其它相邻的狼加了。每杀死一个狼,它就受到和狼攻击一样大的伤害。求杀死所有的狼最小受的伤害。思路:区间dp,dp[i][j]表示从i到j最小的伤害,考虑[i, j]当中的第k个...
分类:
其他好文 时间:
2015-09-22 23:32:16
阅读次数:
244
Time Limit:2 Seconds Memory Limit:65536 KBWhen we are focusing on solving problems, we usually prefer to stay in front of computers rather than go out...
分类:
其他好文 时间:
2015-09-19 10:55:52
阅读次数:
161
初始化:f[i][i]置成i,其余为0三重循环用f[i][j]+f[k][k]更新f[i][j]最后用一个三重循环更新ans数组,记得提前置成最大值var w:array[0..105]of longint; f,sum:array[0..105,0..105]of lo...
分类:
其他好文 时间:
2015-09-17 23:01:19
阅读次数:
204
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5595题意:给出n个字符串,里面包含'*', '.', '^', '!'这四个运算符,以及小写字母(表示向量)和数字。四个运算符都有不同的运算规则。问添上括号后,可以组成...
分类:
其他好文 时间:
2015-09-17 15:13:39
阅读次数:
153
事实上这道题的原型是1258——关路灯,为什么选了这个呢?废话,因为题目呗= =言规正传,觉得这道题扯到看不懂的可以去翻codevs1258,说的挺易懂的其实就是一道区间dp,比较裸的代码,考虑清楚就好记录过去和回来的最小安慰时间= =贴代码var n,c,i,j,sum:longin...
分类:
其他好文 时间:
2015-09-13 22:47:56
阅读次数:
221
区间dp,O(n^3)的算法很容易想。先递增枚举区间的长度d,再枚举起点i,再枚举切点k(i 2 #include 3 #include 4 using namespace std; 5 const int maxn=55; 6 int l,n; 7 int p[maxn]; 8 int dp[ma...
分类:
其他好文 时间:
2015-09-10 01:43:03
阅读次数:
159
1.贪心,递推,基础DP(背包,区间DP,状态压缩DP(去年出了不少于2道铜牌题,看着办))2.搜索(BFS,DFS,A*,IDA*)3.单调队列、单调栈的思想,倍增算法(ST表) (重点左边3个东西在DP优化上的应用,简单讲一下平行四边形法则、斜率优化)4.线段树,树状数组5.树(包括并查集,生成...
分类:
编程语言 时间:
2015-09-10 00:29:17
阅读次数:
312
题目大意:将一段长为L的木棒在给定的n个切割点切开,每切一次的花费等于当前木棒的长度。求切成n+1段的最小花费。题目分析:区间DP。定义dp(i,j)表示切割区间i~j的花费,则 f(i,j)=min(f(i,k)+f(k,j))+dist(i,j)。时间复杂度为n3。代码如下:# include#...
分类:
其他好文 时间:
2015-09-07 22:26:08
阅读次数:
208
一个字符串如果能简写,要么是重复多次,按题中的要求简写;要么是左右两个部分分别简写后再拼起来。dp(i, j)表示字串(i, j)所能被简写的最短的字符串。判断一个字符串是否为周期串以及求出它的周期用的KMP算法。 1 #include 2 #include 3 #include 4 #inc...
分类:
其他好文 时间:
2015-09-04 16:58:47
阅读次数:
240