随笔分类 - 线段树and树状数组
HDU 3966 Aragorn's Story 树链剖分+树状数组 或 树链剖分+线段树
摘要:HDU 3966 Aragorn's Story 先把树剖成链,然后用树状数组维护: 讲真,研究了好久,还是没明白 树状数组这样实现"区间更新+单点查询"的原理... 神奇... #include <stdio.h> #include <string.h> #include <iostream> #
阅读全文
树链剖分
摘要:POJ 3237 Tree 学了一下树链剖分。就是把树剖成链,然后用线段树、树状数组、splay等数据结构来维护。 // POJ 3237 TREE /**DESC: 给出一棵树,有三种操作: 1:第i条边的权值修改成v. 2:a 到 b 的路径上的权值全都取反。 3:在 a 到 b的路径上的权值找
阅读全文
CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组
摘要:题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有出现偶数次的数异或的值。 思路:容易想到,把区间内的所有的数都异或得到的是出现奇数次的数的值,然后再
阅读全文
FZU 2029 买票问题 树状数组+STL
摘要:题目链接:买票问题 思路:优先队列维护忍耐度最低的人在队首,leave操作ok. vis数组记录从1到n的编号的人们是不是在队列中,top维护队首的人的编号。pop操作搞定。 然后,check操作就是在vis数组中查找当前编号之前有多少个为1的数,树状数组大法好。 啊...数据虽然很大,但是t<=1
阅读全文
FZU 2168 防守阵地 I
摘要:题目链接:防守阵地 I 好不容易推出公式,义无反顾的用线段树区间求和,然后MLE。 get区间求和新技能。【技能好熟悉....】 然后。知道公式and get新技能的情况下,卡了快一个点,原因是,那个很讨厌的sum,如果I==1的话,就不能直接那样求了。特判一下。然后!每次求得新ans的基础都是上一
阅读全文
POJ 2886 线段树单点更新
摘要:转载自:http://blog.csdn.net/sdj222555/article/details/6878651反素数拓展参照:http://blog.csdn.net/ACdreamers/article/details/25049767题目大意就是一群熊孩子做游戏,第一个出队的人是编号为k的...
阅读全文
POJ 2828 线段树
摘要:DES:有n个人在排队。现在给你他们依次插队的顺序。问你最后的结果是什么。思路是用线段树记录每个区间的空间个数。然后每次要插入的位置如果小于等于左孩子的空间个数,就搜索左子树。否则搜索右子树。我感觉用的线段树用的很神奇的。看了这个建树的过程才懂得代码、http://www.cnblogs.com/C...
阅读全文
poj 2777线段树应用
摘要:敲了n遍....RE愉快的debug了一晚上...发现把#define maxn = 100000 + 10 改成 #define maxn = 100010 就过了....感受一下我呵呵哒的表情....貌似这个题用了很经典的线段树和位运算。懂了。但不是很懂。确实觉得用的很巧妙。只想说。好坑。 1...
阅读全文
线段树
摘要:hdu 1698 1 // hdu 1698 区间值更新 延迟标记 2 3 #include 4 #include 5 #include 6 using namespace std; 7 #define maxn 200000 8 9 int val[maxn+10];10 struct...
阅读全文
线段树入门
摘要:// 转载自:http://www.cnblogs.com/superbin/archive/2010/08/02/1790467.html 感觉讲的很详细。也很实用。果断转~感谢楼主~~~线段树入门线段树(interval tree) 是把区间逐次二分得到的一树状结构,它反映了包括归并排序在内的...
阅读全文
HDU 2492 树状数组
摘要:DES:按照位置编号给你选手的rank值。每场比赛要有一个裁判,位置和rank在两个选手之间。两场比赛裁判不同或有一个选手不同则可以说两场比赛不同。问你一共可以有多少场比赛。思路是遍历每个人当裁判,找它左右两边比它大和小的数,交叉相乘。树状数组很好的应用。很巧妙。附代码:#include#inclu...
阅读全文
HDU 1698 Just a hook 线段树
摘要:简单的线段树区间更新。区间求和。莫名奇妙的是 数组要开3*N才能过。坑了好久。#include#include#include#define maxn 300000 + 10using namespace std;int val[maxn];struct Tree{ int mark; int to...
阅读全文
POJ 1754 线段树
摘要:e,应该是线段树里的水题。线段树单点更新。查询区间最值。代码套用模板 PS :模板有些地方不太懂。#include#include#include#define maxn 200010using namespace std;int val[maxn];struct Node{ int max; //...
阅读全文
浙公网安备 33010602011771号