- 博客(8)
- 收藏
- 关注
原创 poj3667 线段树(区间合并)
题意:有编号为1~n的n个房间,有两种询问 1.有人来订连续的k间房,有的话返回第一间房的编号,否则返回0。 2.有人退连续的从a开始的连续的k间房。解法:与之前做过的poj2750(线段树+动态规划)类似,就是在线段树上,记录每个区间的3个信息 1.该区间最大的连续空房数 2.该区间从最左边起的最大的
2012-04-25 16:50:47 830
原创 poj1330 LCA离线算法
模版参考:http://blog.csdn.net/non_cease/article/details/7426395题目:给定一棵树,求两个结点的最近公共祖先。(最基础的LCA问题)#include #include #include using namespace std;const int maxn = 10006;int dp[maxn][15], father[m
2012-04-14 13:23:18 945
原创 poj1463 树形dp
题意:一城堡的所有的道路形成一个n个节点的树,如果在一个节点上放上一个士兵,那么和这个节点相连的边 就会被看守住,问把所有边看守住最少需要放多少士兵。 dproot[ i ]表示以i为根的子树,在i上放置一个士兵,看守住整个子树需要多少士兵。 all[ i ]表示看守住整个以i为根的子树需要多少士兵。 状态转移方程: 叶子节点:dp
2012-04-08 20:06:13 1471
原创 poj2750 线段树+动态规划
问题描述:给定一个环形序列,进行在线操作,每次修改一个元素,输出环上的最大连续子列的和。出题者的简单解题报告:把环从一个地方,切断拉成一条直线,用线段树记录当前区间的非空最大子列和当前区间的非空最小子列。如果环上的数都是正整数,答案是:环上数的总和-根结点的非空最小子列;否则,答案是:max{根结点的非空最大子列,环上数的总和-根结点的非空最小子列},每次问答的复杂度是O(logN)。
2012-04-08 14:34:37 2310
原创 poj3067 树状数组求逆序数
题意:日本岛东海岸与西海岸分别有N和M个城市,现在修高速公路连接东西海岸的城市,求交点个数。做法:记每条告诉公路为(x,y), 即东岸的第x个城市与西岸的第y个城市修一条路。当两条路有交点时, 满足(x1-x2)*(y1-y2) 上面说的可能有点难理解,详细说明如下。 记第i条边的端点分别为xi,yi。
2012-04-08 13:14:53 891
原创 poj3468 树状数组(区间更新)
此题详解参见:poj 3468 树状数组解法此篇写下自己之前不是很理解的地方。#include #include #include using namespace std;#define MAXN 100005__int64 initSum[MAXN];__int64 t1[MAXN], t2[MAXN];inline __int64 lowbit(__int6
2012-04-07 15:01:10 2667
转载 poj 3468 树状数组解法
转自:http://kenby.iteye.com/blog/962159一 算法 树状数组天生用来动态维护数组前缀和,其特点是每次更新一个元素的值,查询只能查数组的前缀和,但这个题目求的是某一区间的数组和,而且要支持批量更新某一区间内元素的值,怎么办呢?实际上,还是可以把问题转化为求数组的前缀和。 首先,看更新操作update(s, t, d)把
2012-04-07 14:14:03 2200
转载 RMQ && LCA
转自东大学长crj前辈:http://www.cnblogs.com/drizzlecrj/archive/2007/10/23/933472.htmlRange Minimum Query and Lowest Common Ancestor[翻译]2007-10-23 09:38 by 农夫三拳, 4629 visits, 收藏, 编辑
2012-04-04 20:34:07 1581
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人