![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
--------数据结构--------
文章平均质量分 62
Faithfully__xly
这个作者很懒,什么都没留下…
展开
-
可并堆 - Monkey King(HDU1512)
传送门Analysis我都忘了自己学过左偏树了【呜呜呜呜】就当模板复习吧合并操作int merge(int x,int y){ if(!x||!y) return x+y; if(tree[x].val<tree[y].val) swap(x,y);//这里处理的是大根堆 tree[x].rc=merge(tree[x].rc,y); fa[tree[x].rc]=x;/...原创 2019-10-28 15:50:38 · 125 阅读 · 0 评论 -
堆+双向链表 - 种树(BZOJ2151)
学习ingAnalysis第一眼反应这不是个水dp吗……仔细一想,是我太naive了由于是个环,所以这个是有后效性的(1位置选不选会影响n位置)那怎么办呢?题解爸爸告诉我:如果没有相邻不能选的限制,就直接贪心选择前m大的值即可以后做题的时候先从简单的思考起走,把限制去掉那么现在加上这个限制,我们该如何考虑呢?沿用上面的贪心思路假设A[3]最大,那我们就试图去选A[3]。选中...原创 2019-10-28 14:23:07 · 132 阅读 · 0 评论 -
并查集删除点 - Junk-Mail Filter(HDU2473)
传送门Analysis最粗暴的想法:删除一个点,就将这个点的father设为自己显然,错误因为与这个点相连的其他点的父亲仍然没变比如1,2,3的父亲都是1,现在删除1,1的父亲还是1,2,3也是1,集合还是1个,正确的应该是2个。那稍微思考一下后:删除一个点,就为这个点的father设一个新的节点可是,还是错误比如1,2,3的父亲都是1,现在删除1,1的父亲设为4,2,3目前...原创 2019-10-28 10:00:48 · 162 阅读 · 0 评论 -
扫描线+线段树 - SOJ#999 纪念碑
传送门Analysis将每个矩形(x1,y1,x2,y2)(x1,y1,x2,y2)(x1,y1,x2,y2)拆成两条线段(x1,y1,y2)(x1,y1,y2)(x1,y1,y2) (x2,y1,y2)(x2,y1,y2)(x2,y1,y2)维护两个指针,按横坐标递增扫描过去遇到线段的时候就进行相应的操作具体来说:把y坐标看作下标,维护一个线段树然后相当于查询区间内的最长未被覆盖...原创 2019-10-27 13:09:20 · 165 阅读 · 0 评论 -
1022 - 线段树 - Rikka with Sequence(HDU 5828)
传送门题意维护区间开方,区间加,区间求和。分析区间开方:对于一个区间,显然在开几次方之后区间的极差会很小,并且对整个区间进行区间加操作对区间的极差并没有什么影响,这个极差随着修改数的增多仍然是单调不增的,也就是说,在对这个区间进行了一个近似于常数的开方操作之后整个区间的极差就不会超过1了。那么可以维护区间最值amax,amin,每次区间开方的时候,先看当前的amax-amin是否不超过1...原创 2018-10-22 18:31:42 · 105 阅读 · 0 评论 -
1022 - 线段树 - Siano[PA2015](BZOJ 4293)
[PA2015]Siano描述Description农夫Byteasar买了一片n亩的土地,他要在这上面种草。 他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘米。 Byteasar一共会进行m次收割,其中第i次收割在第d[i]天,并把所有高度大于等于b[i]的部分全部割去。Byteasar想知道,每次收割得到的草的高度总和是多少,你能帮帮他吗?输入In...原创 2018-10-22 21:15:19 · 142 阅读 · 0 评论 -
1022 - 线段树 - 数学计算 [Tjoi2018](BZOJ 5334)
数学计算Description小豆现在有一个数x,初始值为1. 小豆有Q次操作,操作有两种类型:1 m: x = x * m ,输出 x%mod;2 pos: x = x / 第pos次操作所乘的数(保证第pos次操作一定为类型1,对于每一个类型1 的操作至多会被除一次),输出x%modInput一共有t组输入(t ≤ 5)对于每一组输入,第一行是两个数字Q, mod(Q ≤ ...原创 2018-10-22 22:00:02 · 198 阅读 · 0 评论 -
1028 - Kruskal重构树+Dfs序+ 树上倍增 - 「BZOJ3551」[ONTAK2010] Peaks加强版
ff原创 2018-10-28 21:31:44 · 169 阅读 · 0 评论 -
1026 - 线段树 - 序列操作[SCOI2010]
传送门分析不错,蛮好的一道题对于操作0,1,我们维护区间覆盖的标记 tag[i]tag[i]tag[i]操作2,我们维护区间取反标记 rev[i]rev[i]rev[i]在区间覆盖的时候,取反标记置为-1在区间取反的时候,直接修改revrevrev操作三就是维护一下区间和即可sum[i]sum[i]sum[i]操作四维护6个值:从左数最多有多少个连续的1从右数最多有多少个连续...原创 2018-10-26 12:41:13 · 115 阅读 · 0 评论 -
并查集 - 食物链(NOI 2001)(简单易懂)
题目描述:动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B ,B 吃 C ,C 吃 A 。现有 N 个动物,以 1~N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是“1 X Y”,表示 X 和 Y 是同类。第二种说法是“2 X Y”,表示 X 吃 Y 。此...原创 2018-11-06 17:24:18 · 171 阅读 · 0 评论 -
树链剖分 - 月下“毛景树”(BZOJ 4151)
传送门Ananlysisget 一个新技能如果要处理边权,就把边权移到儿子节点上去,当做点权进行处理修改的时候不修改其lca即可(隔壁dalao说:“这不是常规操作吗……”)然后就是树剖常规操作单点修改,区间覆盖,区间修改,区间最大值维护...原创 2019-01-27 08:36:08 · 201 阅读 · 0 评论 -
离线+并查集 - Mootube
mootube描述给定一颗N个节点的树,定义两点距离为他们之间路径中边权最小值。Q次询问K,V,询问到V距离>=K的点有多少(不含V)输入第一行两个整数N,Q。接下来N-1行,每行3个整数u,v,w表示u,v之间有条路径,长为w接下来Q组询问,每组询问2个整数k,V输出Q行回答询问样例输入4 31 2 32 3 22 4 41 24 13 1样例输出3...原创 2019-01-27 11:25:40 · 599 阅读 · 0 评论 -
最短路树+并查集 - 安全出行Safe Travel(usaco 2009)
描述输入第一行: 两个空格分开的数, N和M第2…M+1行: 三个空格分开的数a_i, b_i,和t_i输出第1…N-1行: 第i行包含一个数:从牛棚_1到牛棚_i+1并且避免从牛棚1到牛棚i+1最短路经上最后一条牛路的最少的时间.如果这样的路经不存在,输出-1.样例输入4 51 2 21 3 23 4 43 2 12 4 3样例输出336Analysis只...原创 2019-02-19 15:53:28 · 438 阅读 · 0 评论 -
线段树合并 - 永无乡(HNOI2012)
Analysis裸的线段树合并板子题Code#include<bits/stdc++.h>#define in read()#define re registerusing namespace std;inline int read(){ char ch;int f=1,res=0; while((ch=getchar())<'0'||ch>'9') i...原创 2019-08-07 19:15:05 · 140 阅读 · 0 评论 -
每日一道模板题-10/10 - 树状数组求逆序对
题面给定一个序列求这个序列中逆序对的个数要求:必须使用树状数组 分析虽然就是这么简单一个模板,但我还是写WA了为什么呢????(不服气╭(╯^╰)╮)因为啊要先插入,再查询,要清楚现在查询的是小于等于当前数的个数(包括了自己,所以要把自己加进去,才能减掉自己) 代码#include<bits/stdc++.h>#define ll lon...原创 2018-10-10 18:40:04 · 142 阅读 · 0 评论 -
1010 - 动态树(LCT)- 弹飞绵羊(BZOJ 2002)
传送门 分析LCT板子题而且只需要link,cut这两个基本操作就可以了对于当前点 i 能到达的点 j,我们就连边,如果有修改就先删除原来的连边,然后再link两个点顺便记录一下sze,最后直接输出答案即可码程序时手滑,调试一上午,rotate又写挂了,沮丧%>_<%唯一可能需要注意一下的就是虽然题目说的是0~ n-1,但由于我们0号节点在splay中作...原创 2018-10-10 14:04:29 · 118 阅读 · 0 评论 -
【2018/08/21】T2-trie树+贪心-位运算(SDOJ 3772)
【写在前面】子集:概念同集合里的子集。举例 { 1,2,3 }的子集有{ 1 },{ 2 },{ 3 },{ 1,2 },{ 1,3 },{ 2,3 },{ 1,2,3 },{ 空 }超集:包含原集合中所有数的集合。举例 { 1,2,3 }的超集有{ 1,2,3,4 },{ 1,2,3,4,5 },{ 1,2,3,6 }……位运算描述有q次操作,每次操作是以下两种:1、...原创 2018-08-21 20:07:15 · 238 阅读 · 1 评论 -
1004 - treap - 普通平衡树
继续平衡树……普通平衡树描述您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询x数的排名(若有多个相同的数,因输出最小的排名) 查询排名为x的数 求x的前驱(前驱定义为小于x,且最大的数) 求x的后继(后继定义为大于x,且最小的数) 输入...原创 2018-10-04 22:02:12 · 90 阅读 · 0 评论 -
1004 - treap - 宠物收养所
……迷上平衡树……【HNOI2004】宠物收养所描述最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a<2^31),而他也给每个处在收养所的宠物一个特点值。这样他就能够很方便的处理整个领...原创 2018-10-04 23:12:01 · 102 阅读 · 0 评论 -
每日一道模板题-10/12 - trie树
描述给定N个字符串S1,S2...SN,接下来进行M次询问,每次询问给定一个字符串T,求S1~SN中有多少个字符串是T的前缀。输入字符串的总长度不超过10^6,仅包含小写字母。输入格式第一行两个整数N,M。接下来N行每行一个字符串Si。接下来M行每行一个字符串表示询问。输出格式对于每个询问,输出一个整数表示答案样例输入3 2abbcabcabcefg样...原创 2018-10-12 21:35:57 · 234 阅读 · 0 评论 -
1012 - trie树最大异或值 - The XOR Largest Pair
描述在给定的N个整数A1,A2……AN中选出两个进行xor运算,得到的结果最大是多少?输入格式第一行一个整数N,第二行N个整数A1~AN。输出格式一个整数表示答案。样例输入31 2 3样例输出3数据范围与约定对于100%的数据: N<=10^5, 0<=Ai<2^31。 分析数组开小了……,你要这样想:一个数最多开31个...原创 2018-10-12 22:12:12 · 424 阅读 · 0 评论 -
1013 - 计算表达式的值
题目描述小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算术表达式,其中只有如下符号:“(”,“)”,“0~9”,“+”,“-”,“*”,“/”,“^”其中“^”表示乘方,“/”用整除。输入的表达式都是合法的,这个表达式的值就是密码。小明数学学得不好,还需你帮他的忙。输入格式输入一行字符串,为一个算术表达式。输出格式输...原创 2018-10-13 20:30:43 · 2521 阅读 · 0 评论 -
1012 - trie树&树上异或 - The XOR Longest Path(POJ 3764)
传送门 题意给定一个有n个节点的树,每条边上有个边权,从树中任选两个节点 x 和 y ,把 x 到 y 的路径上所有边权xor起来,求最大值 分析xor???有意思,还记得异或的自反性吗(a^b^b=a,a^0=a)我们发现若将 x 到根路径上的所有边权异或起来,记作 d[x];y 到根路径上的所有边权异或起来,记作 d[y]那么 d[x] xor d[y] 就是 ...原创 2018-10-13 22:24:49 · 333 阅读 · 0 评论 -
1007 - 动态树(LCT)- 洞穴勘探(BZOJ 2049)
传送门 题意一颗树支持:连接两个点 删除两个点之间的边 询问两个点是否连通 分析第一次做LCT的题,有点小激动,虽然这只是一道模板题而已。由题意可知我们需要进行三个操作:link,cut,query对于连接(x,y)这条边,我们先 makeroot(x) ,再将 x 的 fa 置为 y 删除的话,先makeroot(x),再access(y)【取出 y 到...原创 2018-10-07 19:10:40 · 129 阅读 · 0 评论 -
1007 - 树状数组区间修改+单点求值
以前写过树状数组区间修改以及区间查询,现在才发现自己居然不是很会单点查询,但其实相差不是很多,但还是来填一下坑吧差分序列:如果我们用 a 数组表示原序列,则其差分序列为 c 数组,即 c [ i ]= a [ i ] - a [ i - 1 ] 那么对于a数组的区间修改(l,r,w)就可以等价为:c数组的单点修改,c[ l ] + w 以及 c[ r+1 ] - w(这个由定义就可以很明...原创 2018-10-07 20:58:13 · 159 阅读 · 0 评论 -
1014 - 可持久化trie树 - 最大异或和(BZOJ 3261)
传送门 分析添加操作很好办,我们先放一放来看询问操作求最大我们知道xor有自反性所以上面那个式子就等价于 (令S[i]=a[1] xor a[2] xor .... xor a[i])又因为后面两个是可以看做定值,我们令Val=S[n] xor X现在问题就转化为当p>=l&&p<=r时,找到一个S使得S xor Val的值最大这...原创 2018-10-14 14:43:28 · 152 阅读 · 0 评论 -
1008 - 主席树(可持久化线段树) - Poj 2104
传送门 题意求区间第k大 分析就是一个很主席树的板子发现一个写的很良心的博客,但访问量出奇的少???不行不行,秉着应该有福同享的宗旨,我打算分享出来大家一起学习(我真可爱O(∩_∩)O哈哈~)快戳快戳 代码#include<iostream>#include<cstdio>#include<cstring>...原创 2018-10-08 23:23:07 · 159 阅读 · 1 评论 -
1016 - 线段树 - 旅馆(BZOJ xxx)
题目描述奶牛们最近的旅游计划,是到苏必利尔湖畔,享受那里的湖光山色,以及明媚的阳光。作为整个旅游的策划者和负责人,贝茜选择在湖边的一家著名的旅馆住宿。这个巨大的旅馆一共有 N (1 <= N <= 50,000)间客房,它们在同一层楼中顺次一字排开,在任何一个房间里,只需要拉开窗帘,就能见到波光粼粼的湖面。贝茜一行,以及其他慕名而来的旅游者,都是一批批地来到旅馆的服务台,希望能...原创 2018-10-16 19:49:48 · 466 阅读 · 0 评论 -
树状数组-区间查询+区间修改
听说树状数组可以支持区间加??今天特地跑去这里学习了一下,%%%%%%%%%%%%%,下面结合我的理解再讲一讲有关树状数组的基础知识我就不赘述了,想必大家都明白,如果不清楚可以自己百度,毕竟这不是蒟蒻三言两语就可以讲通的那现在假设你已经会了树状数组的 “ 单点修改,区间询问 ” ,我们就来讲一讲升级版的 “ 区间修改,区间询问 ”【写在前面】区间修改:我们让 sigma (r ...原创 2018-08-18 19:56:15 · 695 阅读 · 1 评论