
线段树
文章平均质量分 77
nlj1999
这个作者很懒,什么都没留下…
展开
-
1493: [NOI2007]项链工厂
这线段树还能不能好好用了╭(╯^╰)╮然而Splay写起来太麻烦(虽然看起来好像很简单的样子,各种操作都支持)于是还是滚回去用线段树,主要坑在旋转这个操作,因为线段树不能转。。。。所以只好让区间端点转一下了,所以每次操作的时候要先计算操作区间。#include#include#includeusing namespace std;const int N=500000+5;in原创 2015-12-17 12:42:13 · 303 阅读 · 0 评论 -
BZOJ 3575: [Hnoi2014]道路堵塞
首先我们玩一下会发现删掉一条路之后的最短路一定是原来最短路的一段且仅一段换成了一条非最短路每一次删边,我们从边的起点出发进行spfa,当spfa到终点往后的最短路上的点时更新一下答案(的集合)对于答案的集合呢,我们维护以每个点为终点的非最短路的总的长度(即1-p最短路+某个点->p的非最短路+p->n的最短路),这个搞个线段树就好了然后处理完一条边之后,以这条边的终点为终点的答案全都非原创 2016-04-11 20:18:47 · 1086 阅读 · 0 评论 -
COGS 1834. [国家集训队2011]采矿
人类互相伤害的典型题目首先显然两个分组背包是可以合并的所以我们可以用线段树维护一段区间的背包解于是就变成了树剖了#include#include#include#includeusing namespace std;#define rep(i,l,r) for(int i=l;i<=r;i++)#define per(i,r,l) for(int i=r;i>=l;i-原创 2016-04-30 08:13:20 · 405 阅读 · 0 评论 -
BZOJ 4592: [Shoi2015]脑洞治疗仪
多写线段树有利于治疗脑洞0,2操作都好说操作1需要二分一下能够填脑洞的范围复杂度m(logn)^2(rank1怎么跑得辣么快啊,难道有1个Log的做法?)#include#include#include#include#include#include#include#include#include#include#include#include#de原创 2016-05-25 14:14:37 · 563 阅读 · 0 评论 -
BZOJ 3207: 花神的嘲讽计划Ⅰ
刷点水题舒缓心情一开始没读懂题以为是查询那些数是不是都在那个区间里于是开始写主席树,写完发现不对QAQ题目是求那个区间里是否存在一个字串和给定串相等由于串长是一定的,每个节点存以该节点为结尾的长度为K的字符串的哈希值然后用主席树判断是否存在即可(读错题后一怒之下把主席树删了写了个特技莫队,跑得还挺快的)#include#include#include#includ原创 2016-05-25 20:15:27 · 464 阅读 · 0 评论 -
BZOJ 4538: [Hnoi2016]网络
感觉考试的时候智商约等于0 QAQ直接把链剖出来的区间取反再更新就好了#include#include#include#include#includeusing namespace std;const int N=200000+5;#define rep(i,l,r) for(int i=l;i<=r;i++)typedef priority_queue heap;str原创 2016-04-19 09:07:20 · 661 阅读 · 0 评论 -
BZOJ 4539: [Hnoi2016]树
md强行凑数据结构题,树剖+主席树,各种函数搞一大堆查询,然后其实就是求两点的lca。。。。#include#include#includeusing namespace std;const int N=100000+5;#define rep(i,l,r) for(int i=l;i<=r;i++)typedef long long ll;ll read(){ char ch原创 2016-04-19 11:51:28 · 562 阅读 · 0 评论 -
BZOJ 4597: [Shoi2016]随机序列
很可做的一道题考虑一下一段序列的答案为b+x,x为最右连续一段是乘积,然后和为x,b则为对应的左边的和然后考虑在右边加一个数k,分类讨论一下发现x'=kx,b'=2x+3b于是就可以DP了然后DP可以矩阵转移于是就可以用线段树维护矩阵就水过去了(好像很简单哎,AC率好高的说)#include#include#include#include#include#原创 2016-05-27 15:46:31 · 605 阅读 · 0 评论 -
BZOJ 4515: [Sdoi2016]游戏
树链剖分将每次更新拆成若干条链上关于depth的一次函数于是就变成了线段树维护半平面交中x轴上一段区间的y最小值考虑每个点代表一条覆盖整个区间的直线,以此来进行标记永久化若两个标记,即两条直线覆盖了同一区间Case 1:其中一个标记处处比另一个优,那么显然取优的那个Case 2:在该区间中有交点,于是取更优区间较大的那个为此区间的标记,另一个递归到相应的区间去继续更新由原创 2016-05-18 19:49:54 · 615 阅读 · 0 评论 -
BZOJ 4551: [Tjoi2016&Heoi2016]树
NOIP题?DFS序+永久化标记10分钟码完。。。。。。。#include#include#include#include#include#include#include#include#include#define rep(i,l,r) for(int i=l;i<=r;i++)#define per(i,r,l) for(int i=r;i>=l;i--)#d原创 2016-05-20 14:41:38 · 368 阅读 · 0 评论 -
BZOJ 4552: [Tjoi2016&Heoi2016]排序
BC #76这题目好鏼啊!(我也不知道怎么就满足二分性了)#include#include#include#include#include#include#include#include#include#define rep(i,l,r) for(int i=l;i<=r;i++)#define per(i,r,l) for(int i=r;i>=l;i--)#d原创 2016-05-20 15:49:21 · 593 阅读 · 0 评论 -
APIO2015 UOJ 110-112
#110. 【APIO2015】Bali Sculptures很像NOI2014的起床困难综合征首先每一位拆开来做从高位到低位贪心,看每一位能不能为0NN#include#include#include#includeusing namespace std;const int inf=1e9;#define rep(i,l,r) for(int i=l;i<=r原创 2016-04-27 19:37:45 · 682 阅读 · 0 评论 -
BZOJ 4012: [HNOI2015]开店
这叫啥?可持久化树链剖分?首先忽略掉那个年龄的限制那就是求所有点到某点的路径之和这个画个图会发现是 Σdepth[i]+n*depth[u]-2*Σdepth(lca(u,i))前两个可以O(1)求,最后那个可以用树剖求。方法就是每个点到根的路径测度+1,这个可以用线段树更新,然后u到根的路径上的测度与长度之积的和就是答案了。但是出现了那个可恶的限制不过嘛,我们有传说中原创 2016-04-13 19:51:05 · 515 阅读 · 0 评论 -
CODEVS 1954 线段树
jxr你过来我保证不打死你!!!故事是这样的……今天中午发现jxr早上发了一道题过来……嗯,就是这题了。一看到这题,我就想起了wty大爷的箴言。论JB(划掉)偏题的危害。这题简直就是数据结构10合1啊!!!题目很良心(丧病),给了测试点的编号作为输入。于是我们可以借鉴TKD的写法,写10个程序。。。。。(其实不到吧)首先看第一个点,暴力没跑了。第二个,只有查询?原创 2016-02-24 16:11:19 · 784 阅读 · 1 评论 -
UVA 1232 - SKYLINE
闲得无聊刷白书一开始想得很简单,维护一个区间最小值(修改时忽略下面的高度)和当前区间高度(区间每一点高度都同一才有效),然后就是区间修改,标记什么的。结果发现下面的高度传不上来。。。。。。。于是只好规定区间最低高度等于区间高度时才有效,实际查询时可能遍历到所有的叶节点,效率好像很低的样子,然后加一个强剪枝,即查询高度小于当前区间最低高度时直接返回0,然后就A了,感觉和花神游历各国里面的原创 2015-12-18 12:37:32 · 449 阅读 · 0 评论 -
1095: [ZJOI2007]Hide 捉迷藏
太神辣太神辣太神辣炒鸡线段树神题膜岛娘OrzOrzOrz题解#include#include#include#define lc o<<1#define rc o<<1|1using namespace std;const int inf=1e9;struct Node{ int l,r,a,b,rp,rm,lp,lm,dis;}tr[1200005];int tp原创 2015-12-24 15:45:41 · 302 阅读 · 0 评论 -
3226: [Sdoi2008]校门外的区间
受不了自己如此脑残了。卡了一个小时后发现是道水题。。。。。。一开始分类讨论5种情况,没lazy_tag的都被我写上了。结果无限RE。各种静态查错。然后果断想了个lazy-tag的方法。结果发现其实是没忽略(a,a]这种情况,真是醉了。然后发现又错了。。。。。。果然还是太弱了。重新思考了下换了一种方法。虽然说还是感觉很慢,不过还是交上去了,1000多MS,果然很慢原创 2015-12-25 21:08:54 · 397 阅读 · 0 评论 -
怒水一记 GSS
前几天被QTREE4虐的不轻,今天zyh还说QTREE4可以用动态点分治做,为毛我的动态点分治总是在第4个点WA,科学何在啊。于是义愤填膺地,我去做GSS,又被虐了TAT。GSS1:#include#include#include#define lc o<<1#define rc o<<1|1using namespace std;const int N=50000原创 2015-12-31 21:46:50 · 429 阅读 · 0 评论 -
3196: Tyvj 1730 二逼平衡树
人生第一道树套树的题,卡了3个小时。。。。。。。。简直是人生耻辱啊。目测从此患上了树套树恐惧症。还有就是为毛我写的Treap这么慢(=。=)竟然跑了8秒多,感觉要跪啊。还有这200多行的代码看得我好虚啊。#include#include#include#include#include#include#includeusing namespace std;cons原创 2016-01-18 13:36:49 · 316 阅读 · 0 评论 -
3110: [Zjoi2013]K大数查询
蒟蒻表示树套树是什么,能吃吗?唉无奈本蒟蒻过于沙茶不会树套树。只好整体二分水一水了。跑了近4000MS,怀疑比树套树还慢了。。。。。。#include#include#includeusing namespace std;const int N=50000+5;const int inf=1e9;struct Query{ int a,b,c,cur,tp,id原创 2015-12-21 21:29:40 · 485 阅读 · 0 评论 -
POJ 2750 Potted Flower
题目大意:给定一长度为n的环形序列求最大连续和,连续和长度不能超过n-1,单点修改。最大连续和?我会动规/贪心环形序列?我会乱搞带修改?我会线段树限制长度?!@#¥%……&*()我们先忽略掉环形序列首先,限制很特殊,是n-1,于是我们可以很简单地求出[1,n-1]和[2,n]的最大连续和,取两者的最大值。(不要问我限制为k的时候怎么做,我不会啊)然后我们看环形序列,首先原创 2016-02-15 11:37:18 · 307 阅读 · 0 评论 -
POJ 2482 Stars in Your Window
题目大意:在一个二维平面上有好多点,给点加权,给定矩形长宽,放置该矩形使得矩形内(不含边框)中点的权值和最大。题目没什么特别的,大概就是把每个点都变成矩形(和给定矩形等大),然后求一个点使得覆盖它的矩形的权值和最大,线段树+离散化+扫描线就可以解决了。但是但是但是大家看下题目……卧槽简直是英文表白范文啊,我已经醉的嫑嫑的了。#include#include#incl原创 2016-02-15 12:49:37 · 259 阅读 · 0 评论 -
SPOJ NKTEAM - Team Selection
05年的论文题问题其实可以抽象成在XOY坐标系中,每个点分别向上和向右引一条线扩展出一个无限大的区域,求没有被其他区域包含的点的个数白书上有个差不读多的题(那个题好像少一维,所以可以直接做),不过那个题的坐标范围比较大(10^9),但是其实只需要大小关系,于是离散化一下答案不变。于是可以用树状数组维护前缀最小值(当然你用线段树我也没意见),如果x意义上的前缀最小值大于当前点的y值,则当原创 2016-03-09 14:53:42 · 699 阅读 · 0 评论 -
bzoj 1969: [Ahoi2005]LANE 航线规划
好久不写图论题好虚啊,m打成n RE了3次QAQ人生耻辱啊。首先假设没有删边,显然答案是两点间桥的数量。于是求边双连通分量,缩点缩边,只留下桥。所以剩下的肯定是树啦。于是询问变成了求树上两点间距离,求下LCA就可以直接做了。但是还有删边操作。删边肯定不好处理。反过来改成加边操作。两点与LCA形成了一个边双联通分量,于是把他们缩起来。直接缩不可取,考虑缩点的后果是原创 2016-03-15 10:08:39 · 993 阅读 · 0 评论 -
BZOJ 4553: [Tjoi2016&Heoi2016]序列
我就不懂了怎么又是线段树啊(好吧其实可以写平衡树)f[i]可以从f[j](a[j]观察条件发现就是某个矩阵里的权最大的点权值线段树套权值线段树就可以n(logn)^2了,但是空间也是这么多,会MLE所以三维偏序什么的还是cdq分治吧然后就轻易地过掉了#include#include#include#include#include#include#include原创 2016-05-20 19:58:01 · 672 阅读 · 0 评论