
算法题解-线段树/树状数组
Jarily
这个作者很懒,什么都没留下…
展开
-
PKU2886(Who Gets the Most Candies?)线段树+反素数
/*******************************************题目大意:有n个小孩在玩游戏,每个小孩手上都有一个数字;第k个小孩先出去,然后给出手上的数值x;大于0的话就是从他左边开始数的第x个小孩;否则就是从右边数的第-x个小孩接着出列;直到所有小孩出列;第p个出列的小孩,将拿到f(p)个糖果;f(p)表示p的正因子个数;现在要求得到最多糖果的小孩;原创 2013-03-05 13:31:02 · 1335 阅读 · 0 评论 -
PKU3468(A Simple Problem with Integers)线段树的成段更新
/***********************************************题目大意:Q a b :查询区间[a,b]的和;C a b x : 更新区间[a,b],区间所有值加上x;算法思想:线段树的成段更新--延迟更新;在区间查询和更新的时候加入一个延迟节点;每次要在下次查询或者更新到该区间时;再把节点的信息传递到左右孩子的结点上;这样更新大大减少了时原创 2013-03-07 15:25:30 · 1298 阅读 · 0 评论 -
PKU3667(Hotel)线段树
/**********************************************题目大意:有一个旅馆,有N个房间排成一排;现在有两种操作:第一是有a个顾客要入住连续的a个房间;要求输出最小的左端点的位置,不能满足就输出0;第二是将以a开始,长度为b的连续房间清空;1 a: 询问是不是有连续长度为a的空房间,有的话住进最左边;2 a b: 将[a,a+b-1]的房间原创 2013-03-07 16:21:04 · 1201 阅读 · 0 评论 -
树状数组算法分析
/************************************************************************************树状数组有一维树状数组和二维树状数组;主要的问题模型为已知数组a[n],下标从1开始,更改a中的元素,要求得新的a数组中i到j区间内的和;树状数组中S[k]存储的是从k开始向前数k的二进制表示中右边第一个1所代表的数字个元原创 2012-12-29 16:32:11 · 600 阅读 · 0 评论 -
PKU2892(Tunnel Warfare)线段树求最大连续区间
/**************************************题目大意:一条直线上的有n个顶点;(1)D x 破坏顶点x;(2)Q x 表示查询以x所在的最长的连续的点的个数,包括顶点x本身;(3)R 修复上一次被破坏的点;算法思想:线段树,求最大连续区间,操作类似于pku3667;ls 记录区间左端点开始的最大连续个数,rs 记录区间右端点开始的最大的连续个原创 2013-03-12 17:07:51 · 1677 阅读 · 0 评论 -
HDU2795(Billboard)线段树
/*************************************************题目大意:有一块h*w的矩形广告板,要往上面贴广告;然后给n个1*wi的广告,要求把广告贴上去;而且要求广告要尽量往上贴并且尽量靠左;求第n个广告的所在的位置,不能贴则为-1;算法思想:利用线段树可以求区间的最大值;将位置即h用来建树(h<=n,大了没有意义);树中存储的为该位置原创 2013-03-02 21:24:02 · 4521 阅读 · 0 评论 -
PKU2985(The k-th Largest Group)线段树+并查集
/********************************************题目大意:n只猫,m个操作;0 a b 合并两个猫所在的集合;1 k 询问在当前的所有的集合中含有的猫的个数第k大的为多大;算法思想:合并操作应该用并查集;查询操作可以用线段树;开始将所有的数据输入进来,利用并查集计算出所有种集合的大小;然后根据集合的大小建树查询就可以了;***原创 2013-03-18 09:27:46 · 1666 阅读 · 0 评论 -
Codeforces46D(Parking Lot)线段树区间查询
/***********************************************题目地址:http://codeforces.com/problemset/problem/46/D题目大意:有一条长度为L的街道,有N个操作,操作有两种:(1)"1 a",表示有一辆长度为a的车开进来想找停车位;停车位必须满足与它前面的车距离至少为b,与后面的车距离至少为f;如果能找到原创 2013-03-10 17:44:56 · 2019 阅读 · 0 评论 -
HDU3397(Sequence operation)线段树的多种操作
/**********************************************题目大意:0 a b将区间[a,b]所有数全部变成01 a b将区间[a,b]所有数全部变成12 a b将区间[a,b]中所有数0 1互换,0变1,1变03 a b输出区间[a,b]中1的个数4 a b输出区间[a,b]中最长连续1的个数算法分析:涉及到线段树的多种操作;0,1两种操作原创 2013-03-13 13:50:10 · 1616 阅读 · 0 评论