题目大意:给定一棵树,边上有边权,m次询问,每次选定一些关键点,求将1号节点与所有关键点都切断所需的最小花销
关键点的总数
首先我们考虑暴力想法
令f[x]表示切断以x为根的子树中所有关键点的最小花销
g[x]表示x是不是关键点
那么对于x的每个子节点y有f[x]=Σmin(g[y]?INF:f[y],Distance(x,y) )
这样每次暴力做一遍树形DP,时间复杂度是O(n*...
分类:
其他好文 时间:
2015-01-07 16:57:32
阅读次数:
180
转载楼主我用的第一个图片优化,效果非常好,推荐!我们都知道,漂亮的图片可以让一个网页看起来更加高端大气上档次。然而,一般高分辨率的高清图片/照片的体积都比较巨大,如果网页里包含很多图片,那网页加载的速度就会变得很慢。不仅如此,如果网页的访问量较大,其中图片消耗的流量带宽也会成倍增加!因此,如能在不损...
分类:
Web程序 时间:
2015-01-06 19:34:57
阅读次数:
182
#include
#include
#include
using namespace std;
#define MAXN 123123
char s[MAXN];
int sa[MAXN],t[MAXN],t2[MAXN],c[MAXN],n;
void build(int m)
{
int i,*x=t,*y=t2;
//其实下面的是计数排序
f...
分类:
编程语言 时间:
2014-12-31 10:04:05
阅读次数:
184
题目大意:
思路:一看各种后缀那就是后缀数组没跑了。
求出sa,height之后就可以乱搞了。对于height数组中的一个值,height[i]来说,这个值能够作为lcp值的作用域只在左边第一个比他小的位置到右边第一个比他小的位置。这个东西很明显可以倍增RMQ+二分/单调栈。
之后就是数学题了
Σlen[Ti] + len[Tj] = (len + 1) * len * (len ...
分类:
编程语言 时间:
2014-12-30 23:47:04
阅读次数:
499
题目大意:给定一张无向图,求从s出发恰好经过n条边到达e的最短路
倍增Floyd……为何大家都管这个叫做矩阵乘法- - 算了为何要纠结这种事- -
令f[p][i][j]表示走2^p步从i到达j的最短路 有f[p][i][j]=min{f[p-1][i][k]+f[p-1][k][j]}
将n进行二进制拆分 用矩阵g记录答案矩阵 对于每一位p 用f[p]和g两个矩阵搞出h 再将h的值赋给g
...
分类:
其他好文 时间:
2014-12-30 09:16:28
阅读次数:
212
题目大意:求恰好走k步从S到T的最短路。
思路:设f[p][i][j]为从i到j恰好走2^p步的最短路,DP方程十分简单:f[p][i][j] = min(f[p][i][j],f[p - 1][i][k] + f[p - 1][k][j]);
对总步数T进行二进制拆分,在T有1的位置上,假如这个位置为p,那么就用f[p][][]来更新答案g[][],最后得到的g[][]就是答案矩阵。...
分类:
其他好文 时间:
2014-12-30 09:16:17
阅读次数:
184
EtherChannelEtherChannel(以太网通道)是由Cisco研发,应用于交换机之间的多链路捆绑技术。其基本原理是:将两个设备间多条相同特性的快速以太网或千兆位以太物理链路捆绑在一起组成一条逻辑链路,从而达到带宽倍增的目的。除了增加带宽外,EtherChannel还可以在多条链路上均衡..
分类:
其他好文 时间:
2014-12-29 18:35:06
阅读次数:
266
题目大意:给定一个由'a'和'b'构成的字符串,求不连续回文子序列的个数
首先回文一定是将字符串倍增 由于求的是不连续回文子序列的个数 因此我们可以求出总回文子序列的个数,然后减掉连续的
连续的就是回文子串 用Manacher算法可以O(n)求解
不连续的就有些难搞了
首先我们令f[i]表示以i为中心的对称字符对个数
比如s[]=$#a#b#a 那么s[4]='b' f[4]=2
那么...
分类:
编程语言 时间:
2014-12-27 17:40:35
阅读次数:
243
题目大意:给定一张图,求从1开始到达m的权值至少需要遍历多少条边
n
f[temp][i][j]表示经过2^temp条边从i走到j的最大权值
更新时f[temp[i][j]=max{f[temp-1][i][k]+f[temp-1][k][j]}
然后用矩阵g[i][j]记录当前走的权值,初始主对角线为0,其余为-∞
从大到小枚举temp,利用f[temp]和g得到矩阵h
如果h中1到...
分类:
其他好文 时间:
2014-12-26 09:40:29
阅读次数:
171
快速幂 如何快速计算nm?我们采用从特殊到一般的数学思想: 假设n=2,m=10 直接算的结果是2*2*2*2*...*2 计算了10次 快速幂的思想是将m二进制化 210=4*16*16 计算了3次 同理可得,nm用快速幂来计算的过程是使底数不断倍增,指数倍减,达到时间上的优化:O(N)->O(l...
分类:
其他好文 时间:
2014-12-23 23:54:31
阅读次数:
320