题目大意:
求出每一个结点距离叶子节点的最大距离。
思路分析:
假设1为树的根。
通过一遍dfs 可以求出每个节点到儿子节点上的叶子节点的最远距离。
然后我们要做的就是如果更新答案。
问题就是如果我们开始求的最大值本来就是一个儿子更新的,如果再深搜的话又会造成重复更新。
所以就记录两个值,最大值和次大值。
然后不断更新这两个值。
#include
#includ...
分类:
其他好文 时间:
2014-08-18 18:44:32
阅读次数:
225
题目大意:
一条直线的街道上, 在x位置有一家餐厅。
现在街上有 N 个客户同时点餐,每个客户都有一个不开心的值的增加速度。
每一分钟未到,就会增加v。
现在要使所有客户的不开心值最小。
思路分析:
开始想的应该是贪心的。先送完一边再去送完另外一边。
但是如果每边都有一个点离餐厅的距离非常大。但是其他的距离都很小。那么此时的最优就是先送完两边小的。
所以
dp[i] [j...
分类:
其他好文 时间:
2014-08-18 14:36:22
阅读次数:
239
题目大意:
给出一组合法的括号。
括号要么不涂颜色,要么就涂上红色或者绿色。
匹配的括号只能有一个有颜色。
两个相邻的括号不能有相同的颜色。
思路分析:
因为是一个合法的括号序列。
所以每个括号与之匹配的位置是一定的。
那么就可以将这个序列分成两个区间。 (L - match[L] ) (match[L]+1, R)
用递归先处理小区间,再转移大区间。
...
分类:
其他好文 时间:
2014-08-17 17:04:42
阅读次数:
206
题目大意:
给出一种不合法的括号序列,要求构造出一种合法的序列,使得填充的括号最少。
思路分析:
如果只要求输出最少的匹配括号的数量,那么就是简单的区间dp
dp[i][j]表示 i - j 之间已经合法了最少添加的括号数。
转移 就是 dp[i] [j] = min (dp[i+1][j]+1 , dp[ i+ 1] [ k -1 ] + dp[k+1] [j] (i k 位...
分类:
其他好文 时间:
2014-08-17 15:38:22
阅读次数:
222
题目大意:
在一串数字中取出除了两端的两个数字,求出最小的代价,代价就是每取出一个数,都要加上它与它相邻的两个数的积。
思路分析:
状态方程 :dp [i] [j] 是区间 [i , j] 已经全部取完,只剩下 i j所剩的最小代价。
状态转移 :dp [i][j] = min (dp [i][j], dp[i][k] + dp[k] [j] + a[i]*a[k]*a[j]) ....
分类:
其他好文 时间:
2014-08-16 17:11:00
阅读次数:
230
题目大意:
两种括号匹配,求最长的匹配长度。
思路分析:
状态方程:dp [i][j] 表示区间 i ~ j 之间最长的匹配长度。
转移方程:dp [i][j] = max (dp[i+1][j] , dp[i] [j-1 ] , dp[i+1][k-1] + dp[k+1][j] +2 (条件是i ,k 位置匹配))
#include
#include
#incl...
分类:
其他好文 时间:
2014-08-15 18:01:59
阅读次数:
184
题目大意:
给你m个字符,其中有n种字符,每种字符都有两个值,分别是增加一个这样的字符的代价,删除一个这样的字符的代价,让你求将原先给出的那串字符变成回文串的最小代价。
思路分析:
状态方程:dp[i][j] 表示 区间 i-j是回文串的最小代价。
状态转移:
有三种情况。
1、 i+1 ~ j 已经是回文串了,那么对于 i 这个字符,要么删除掉,要么在这个回文串后面加一个 s...
分类:
其他好文 时间:
2014-08-15 17:55:39
阅读次数:
172
题目大意:
介绍了一种压缩文本的方式,问压缩前后的文本长度。
思路分析:
后缀数组跑模板然后考虑两次l r之间的lcp。
然后减掉重复的长度。
注意ans2的累加。
#include
#include
#include
#include
#include
#define maxn 200005
using namespace std;
typedef lon...
分类:
其他好文 时间:
2014-08-13 19:03:07
阅读次数:
178
题目大意:
简单的塔防游戏,有三种塔。
一种是减速塔,只能减速它身后的敌人,使之移动速度减慢。通过一格的时间变成加z秒。
两种攻击塔,一种只能打面前,另外一种可以打身后。
思路分析:
我们默认把只能攻击面前的塔放到最后面。
状态方程: dp [i] [j] 表示放到第 i 个位置放了 j 个防御塔能达到的最大伤害。
转移方程:dp [i] [j] =max ( dp...
分类:
其他好文 时间:
2014-08-13 15:00:26
阅读次数:
143
题目大意:
n个人的编号是从1 - n ,现在他们无序的站成一排。
第 id 号人和 id-1 id +1 号人是朋友,
朋友之间可以组成group。
一个group的值等于他们人数的平方。
然后有m次询问,问给出的l r 之间能构成group值的和的最大值的group数。
思路分析:
首先,我们面临着假设你知道这个区间有多少个group 你能知道得到最大值的时候grou...
分类:
其他好文 时间:
2014-08-11 21:25:22
阅读次数:
315