随笔分类 -  数据结构_线段树

cpdeforces 712 E. Memory and Casinos 概率论 + 线段树
摘要:给出一个数组p,长度为n,1 <= n <= 10^5 表示有n个格子,在第i个格子,你有p[i]的概率会到i + 1,有1 - p[i]的概率会到i - 1 如果在区间[l,r]上玩游戏,我们规定你起点在l,然后你开始走, 如果你到了l - 1,那么你失败了,游戏结束 如果你到了r + 1,那么你 阅读全文
posted @ 2017-05-06 23:23 _fukua 阅读(372) 评论(0) 推荐(0)
线段树建图
摘要:对于一个图,n个节点,有向边,求点s到其他所有点的最短路。 题目给的边的方式: u -> v [l,r] -> v v -> [l,r] 这样的话边数是O(n^2)级别的,怎么做? 假设把[1,n]建成segment tree 后,有tot个节点。 则建一个新图,新图有2 * tot + n个节点 阅读全文
posted @ 2017-03-29 00:00 _fukua 阅读(254) 评论(0) 推荐(0)
bzoj2006 noi2010 超级钢琴 主席树 + 优先队列
摘要:Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2435 Solved: 1195 Description 小 Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。 这架超级钢琴可以弹奏出n个音符, 阅读全文
posted @ 2016-07-31 16:31 _fukua 阅读(741) 评论(0) 推荐(0)
POJ 2528 Mayor's posters 线段树+离散化
摘要:离散化的大概思路:比如说给你一组数据141000100000,如果直接开线段,显然是浪费,那么我们只要进行映射:1142100031000004接下来我们只要对1234建立线段树就行了只需要[1,4]的区间离散化就相当于是先做映射,然后再建树。本题大意:给定一些海报,可能相互重叠,告诉你每个海报的宽... 阅读全文
posted @ 2015-09-28 16:02 _fukua 阅读(240) 评论(0) 推荐(0)
POJ 4047 Garden 线段树 区间更新
摘要:给出一个n个元素的序列,序列有正数也有负数支持3个操作:p x y0.p=0时,把第x个的值改为y1.p=1时,交换第x个和第y个的值2.p=2时,问区间[x,y]里面连续k个的子序列的最大和(保证y-x+1>=k)我们只要定义数组vv[i]表示原序列中,从第i个开始,连续k个元素的值的和然后我们只... 阅读全文
posted @ 2015-09-16 23:56 _fukua 阅读(247) 评论(0) 推荐(0)
POJ 3162 Walking Race 树形DP+线段树
摘要:给出一棵树,编号为1~n,给出数m漂亮mm连续n天锻炼身体,每天会以节点i为起点,走到离i最远距离的节点走了n天之后,mm想到知道自己这n天的锻炼效果于是mm把这n天每一天走的距离记录在一起,成为一段长度为n的数列现在mm想要从这数列中选出一个连续的区间,要求这个区间的max-min 2 #inc... 阅读全文
posted @ 2015-08-20 17:48 _fukua 阅读(272) 评论(0) 推荐(0)
POJ 3368 Frequent values RMQ 训练指南 好题
摘要:1 #include 2 #include 3 4 const int maxn=1e5+5; 5 const int inf=0x3f3f3f3f; 6 7 inline int max(int x,int y) 8 { 9 return x>y?x:y;10 }11 12 int ... 阅读全文
posted @ 2015-08-05 09:23 _fukua 阅读(216) 评论(0) 推荐(0)
HDU 4027 Can you answer these queries? 线段树,区间修改
摘要:Can you answer these queries?Problem DescriptionA lot of battleships of evil are arranged in a line before the battle. Our commander decid... 阅读全文
posted @ 2015-05-05 14:38 _fukua 阅读(217) 评论(0) 推荐(0)
HDU 1698 Just a Hook 线段树 区间修改
摘要:题意:一个区间编号为1到n,刚开始每个单位的值都为1,然后给出q个操作:u,v,w,把区间[u,v]的单位的值修改为w,问这q个操作后,总区间的值的和。注意,这道题在输出的时候,我在最后忘了一个 ".",然后就wa了一次。这个线段树有3个函数,pushup,pushdown,update,(buil... 阅读全文
posted @ 2015-03-23 21:29 _fukua 阅读(308) 评论(0) 推荐(0)
poj2828 Buy Tickets 线段树 单点修改
摘要:线段树,poj 阅读全文
posted @ 2015-03-23 20:20 _fukua 阅读(186) 评论(0) 推荐(0)
hdu2795 Billboard 线段树
摘要:题意:给出一块h*w的广告牌,还有n张1*u的海报,海报尽量往上,左边的位置张贴,问每一张海报能贴的多高。线段树单点修改。注意:因为1 n的话,最坏的情况下也只要用到前n行。所以若h>n 则h=n如果不加这一句,因为线段树的数组要开到h 2 #include 3 using namespace st... 阅读全文
posted @ 2015-03-21 16:29 _fukua 阅读(227) 评论(0) 推荐(0)
hdu1394 Minimum Inversion Number 线段树和树状数组
摘要:题意: 输入一个长度 n 第二行给出长度为n的数组,数组的值刚好为0到n-1这n个数。 然后每次把数组的第一个数放到最后一个,放n-1次,共有n个排列,这n个排列就有n个逆序数,输出这n个逆序数的最小值。我的做法:1、每次输入a[i]后,都把a[i] ++;2、求出第一个排列的逆序数3、递... 阅读全文
posted @ 2015-03-21 11:48 _fukua 阅读(231) 评论(0) 推荐(0)
poj 3468 A Simple Problem with Integers 线段树
摘要:这道题属于线段树的区间修改给出一个序列,对其进行Q次操作,"Cabc" means addingcto each ofAa,Aa+1, ... ,Ab. -10000 ≤c≤ 10000."Qab" means querying the sum ofAa,Aa+1, ... ,Ab.注意,这道题... 阅读全文
posted @ 2015-03-19 23:19 _fukua 阅读(273) 评论(0) 推荐(0)
HDU1754 I hate it 线段树
摘要:线段树,单点修改这道题就是给你一些学生的初始成绩,然后有m个命令,输入 “Q A B ”的时候,表示这是一条询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少输入为 “ U A B ”的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B 1 #include 2 #i... 阅读全文
posted @ 2015-03-06 22:34 _fukua 阅读(222) 评论(0) 推荐(0)
Hdu1166_敌兵布阵——线段树or树状数组
摘要:树状数组,插点问段 1 #include 2 #include 3 #include 4 using namespace std; 5 const int MAXN=50000+5; 6 int c[MAXN]; 7 int lowbit(int x) 8 { 9 return x&(-x)... 阅读全文
posted @ 2015-03-06 22:17 _fukua 阅读(239) 评论(0) 推荐(0)