摘要: 题目:维护一个树,支持修改边长,查询任意两点间距离。思路:学习了一下树链剖分,还是看了一阵子才看懂的(大概两个多小时orz。。。)其实总的来说并不是很难,主要是数组比较多,然后看的那篇博客大概是为了压缩代码写得比较紧凑所以看的不是很明白。树链剖分的比较有技巧性的地方是查询,如果在一条轻链上,每次往上... 阅读全文
posted @ 2015-09-05 19:46 PlusSeven 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 1 UVALive4513 (字符串hash题目:在一个串中找到至少出现m次的最长的串。思路:直接hash,然后二分答案。/** @author: Cwind* http://www.cnblogs.com/Cw-trip/*///#pragma comment(linker, "/STACK:1... 阅读全文
posted @ 2015-09-03 12:00 PlusSeven 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题目:求s到t的第k短路。思路:网上是清一色的A*算法,所以学习了一下。所谓Astar算法其实就是启发式的bfs。这里设置了一个估价函数h,结合当前位置的最短路和到终点的估计最短路长度来选择下一个要扩展的节点(dijkstra算法对于所有的点的h值可以视为是一样的,所以下一个扩展的节点只与当前的最短... 阅读全文
posted @ 2015-08-28 23:34 PlusSeven 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题意:有若干字符,现在要把它们连成一个字符串,每种字符后面只能接特定种类的字符,现在询问能连接出的长度小于等于m的字符串有多少种。思路:我们可以把这个转移关系看成一个图,如果字符a后面可以接b,那么从a向b连边。用邻接矩阵保存这个图。。。然后可以发现长度为m的字符串实际上是这个图中的一条长度为m(经... 阅读全文
posted @ 2015-08-20 21:25 PlusSeven 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 题目大意:需要解雇若干人,解雇每个人有一个损失或收益,解雇一个人就必须结果他的所有下属,问最大收益。思路:裸最大权闭合图问题,对于权值为q的点,负权向汇点连-p的边,正权源点向其连p的边,上下级关系上级向下级连oo的边,然后求最大流最小割,最大收益即为总正点权减最小割,需要裁员的人即为残余图中从源点... 阅读全文
posted @ 2015-08-16 11:13 PlusSeven 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 题目:每个人有1~9的编号,有两个门,一帮人能进门,当且仅当这些人的编号之和与门的编号同余。问把这些人安排到两个门有多少种方法。思路:比赛的时候有点脑抽,想了好久才发现是个简单dp。。。。只需要统计每个编号的人数,然后dp[i][j]表示前i个编号的人组成j同余的方案数,然后由于每种人选9的倍数个是... 阅读全文
posted @ 2015-08-15 00:09 PlusSeven 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题目:一棵树上每个节点有个字符值,询问每个节点的深度为h的子节点的字符是否能组成一个回文串。思路:首先是奇妙的dfs序和时间戳,通过记录每个节点的dfs进出时间,可以发现某个节点的子节点的进出时间均在该节点的进出时间范围内(这是很直观的dfs的性质),这样可以把树形结构转变为线性结构,方便进行各种处... 阅读全文
posted @ 2015-08-14 23:55 PlusSeven 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题目:给出一个字母矩阵,问从左上角走到右下角的走法有多少种走法能走出回文子串,只能向下或向右走。思路:正解是O(n^3)的dp,也跑了2.9s,可见这题时限是比较紧的。自然的一个想法是两头同时向中间走,这样可以保证走出的是回文串,问题在于如何dp。一共需要走O(n+m)步,而每一步从左上走过来的和右... 阅读全文
posted @ 2015-08-14 16:41 PlusSeven 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 1032 最长回文子串#include #define pb push_back#define se second#define fs first#define sq(x) (x)*(x)#define eps 0.000000001using namespace std;typedef long ... 阅读全文
posted @ 2015-08-13 10:57 PlusSeven 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题目:求出一棵树上任意一点能到的最远距离,然后若干询问,问区间内最大最小距离只差小于q的区间最长有多长。思路:最远距离通过两次dfs树形dp求得,询问需要先用st表处理一下,然后线性扫。基本是参考kuangbin的。ps:可能是我写挫了。。用vector做邻接表是1996ms过了一次,然后就是无限t... 阅读全文
posted @ 2015-08-04 00:33 PlusSeven 阅读(149) 评论(0) 推荐(0) 编辑