数据结构
文章平均质量分 66
YiPeng_Deng
这个作者很懒,什么都没留下…
展开
-
LOJ#3524. 「IOI2021」钥匙
Description传送门Solution首先注意到如果x−>y,y−>zx->y,y->zx−>y,y−>z,那么x−>zx->zx−>z。因此考虑xxx能够到yyy,如果yyy不能够到xxx,那么px>pyp_x>p_ypx>py,xxx就失去了意义,同理所有能够到达xxx的点也失去了意义。因此可以考虑维护一个栈,每一个栈中的元素是一个强连通分量,并且它们形成了一条链。每一次从栈顶进行扩展,如果能够到一个无意义原创 2021-06-23 20:00:52 · 709 阅读 · 1 评论 -
CF1534简要题解
CF1534A:二分图染色。B:贪心将单独的一列往下减。C:并查集。D:先询问一次,然后选择奇数层或偶数层的点询问相邻的即可.E:先钦定所有都是1,然后需要变成0,每一次选择尽量多的1变为0,不够的用0来补充,贪心下去即可。或者DP,设fif_ifi表示iii个111要操作多少次得到,可以将fj,fkf_j,f_kfj,fk转移到fj+k−2if_{j+k-2i}fj+k−2i,然后倒着模拟回去即可。F主要需要简化模型之后发现性质。显然建图之后tarjan缩点,然后需要在DAG原创 2021-06-17 16:30:26 · 261 阅读 · 0 评论 -
【牛客挑战赛46】F.柠檬树
Description这是一棵有 n 个柠檬的柠檬树,由 n-1 条枝条连接而成。秋天了,柠檬都成熟了, 牛牛和牛妹准备选一些柠檬送给他们的朋友们。对于每一个朋友,牛妹会选择第 l-r 个柠檬送给朋友。具体的采摘方法是:选取尽可能少的树枝,使得区间内的柠檬两两连通。牛牛负责派送柠檬,但他的朋友太多啦,他实在是忙的上气不接下气,所以他想让您来帮忙。n,q≤2e5n,q\le2e5n,q≤2e5Solution类似数星星同样有两种方法,首先先转化为到根节点的链并,然后减原创 2020-12-15 21:35:05 · 281 阅读 · 0 评论 -
JZOJ6911. 【2020.12.01提高组模拟】莫队(team)
Description支持单点修改,求区间[l,r][l,r][l,r]有多少子区间不包括重复数字。n,q≤2e5n,q\le2e5n,q≤2e5Solution裸题?对于每一个节点维护前面第一个与它相同的位置,假设是preipre_iprei,那么询问[l,r][l,r][l,r]相当于是求:∑i=lri−maxj≤l(prej,l−1)\sum_{i=l}^ri-max_{j\le l}(pre_j,l-1)i=l∑ri−maxj≤l(prej,l−1)考虑这个东西其实就是原创 2020-12-01 21:32:01 · 255 阅读 · 0 评论 -
JZOJ6866. 【2020.11.16提高组模拟】路径大小差
Descriptionn,wi≤2e5n,w_i\le2e5n,wi≤2e5Solution一道简单题,比赛的时候没有时间想。。。可以简单点分治,合并讨论max,min的大小关系,用一个树状数组统计。也可以容斥,求恰好[l,l+k][l,l+k][l,l+k],相当于[l,l+k]−[l+1,l+k]−[l,l+k−1]+[l+1,l+k−1][l,l+k]-[l+1,l+k]-[l,l+k-1]+[l+1,l+k-1][l,l+k]−[l+1,l+k]−[l,l+k−1]+[l+1,l原创 2020-11-16 19:17:10 · 268 阅读 · 0 评论 -
CF504E Iron Man
CF504E Iron Man一个边权为111的nnn个点的树上有mmm个人在运动,第iii个人从viv_ivi以cic_ici的速度在tit_iti时刻出发前往uiu_iui求最早什么时候有两个人相遇(可以在边上)。n,m≤1e5n,m\le1e5n,m≤1e5。Solution首先树剖,变成链上的问题。如果以时间为横坐标,深度为纵坐标,那么一个运动的人就是一条线段,现在要求若干条线段最早在什么地方相交。显然一条线段相交的线段是在它加入的时候距离它最近的,否则在更早原创 2020-10-23 19:20:11 · 143 阅读 · 0 评论 -
JZOJ6825. 【2020.10.17提高组模拟】prime
Descriptionn<=2e5,∣v∣≤5000n<=2e5,|v|\le5000n<=2e5,∣v∣≤5000Solution对于虚数的相乘,是模长相乘、极角相加的,最后是质数模长∣p∣2|p|^2∣p∣2,所以最多有两个数相乘形成这个质数。不妨考虑对于还未到两个因子的复数暴力乘,由于势能一定,所以时间是可以满足的。又因为有区间赋值,所以我们可以用一个平衡树来进行块的合并(set也可以)。再考虑不贡献模长的四种数,1,−1,i,−i1,-1,i,-i1,−1,i,原创 2020-10-19 22:03:21 · 197 阅读 · 0 评论 -
JZOJ6687. 【2020.06.04省选模拟】树没了(tree)
Descriptionn,q<=2e5n,q<=2e5n,q<=2e5Solution切了一道维护子树size的LCT的模板题,庆祝一下(手动滑稽)首先把颜色挂在到父亲的边上(套路),那么除了每一个联通块的最顶端的点,其他点的颜色都是一样的。改点的时候就修改到它的父亲的边的连通性。仔细思考之后得出需要维护轻边到它的∑sz[y]K\sum sz[y]^K∑sz[y]K,以及当前点轻边连向它的∑sz[y]\sum sz[y]∑sz[y],还有整棵Splay子树的前者的和(即子树原创 2020-06-07 22:11:10 · 339 阅读 · 0 评论 -
JZOJ6642. 【GDOI20205.20模拟】classroom
DescriptionSolution一道集大成的数据结构题。假设W(x)W(x)W(x)表示xxx到最近的楼梯的距离。根为xxx答案为——跨层的贡献,所有点到xxx的距离和,所有点到xxx路径上Min(W(p))Min(W(p))Min(W(p))的和。第一个可以排序简单计算。第二个可以虚树上换根DP。第三个由于是最小值,可以考虑并查集。可以直接并查集然后打tag计算答案。也可以预先建出克鲁斯卡尔重构树(注意这里没有新加的点,从大到小加入,那么两点路径上的最小值就是它们的LCA的W),然原创 2020-05-24 16:04:36 · 372 阅读 · 0 评论 -
【李超树】【2019杭州集训12.12】不知道
Description李超树李超树的运用范围比较小,是一种专门处理区间直线问题的线段树。可以在log的时间内满足单点修改——添加一条直线,并在log的时间内查询——询问x为给定值时在所有直线上的最值。简单来说就是维护一个支持插入查询的凸壳。线段树上每一个节点记录一条直线。考虑插入一条直线,没有直线就直接插在这个节点,否则如果完全比当前直线在这个区间内大就替换掉。如果交点在区间内就把...原创 2019-12-12 18:31:22 · 194 阅读 · 0 评论 -
【历史版本线段树】【2019杭州集训12.08】漏网之鱼(escape)
Descriptionn,Q<=1e6n,Q<=1e6n,Q<=1e6Solution基础线段树?首先考虑固定一个端点,维护所有另一个端点的mex。根据固定的端点的不同是两种截然不同的做法。历史版本查询线段树查询一个简单来说就是记录一个time,将贡献表示成k∗time+bk*time+bk∗time+b的一个一次函数。对于修改的tag也是类似的一个一次...原创 2019-12-10 20:55:06 · 489 阅读 · 0 评论 -
JZOJ5956.【NOIP2018模拟11.7A组】easy LCA
PROBLEM给定一个n个节点的树,给定一个排列,求所有连续子段的节点的LCA的深度和。SOLUTION这题有很多种方法。分治考虑跨过区间中点的答案,从中线往两边扫,扫过左半边和右半边的LCA一定是在两条链上,那么合并这两条链上任意点对的答案,扫一遍就可以了。另外考虑O(1)求LCA,用欧拉序与RMQ可以做到总复杂度O(Nlog n),只不过常数巨大。一个性质对于一个排列,任意相邻位...原创 2018-11-21 20:33:26 · 195 阅读 · 0 评论 -
莫队学习小计
莫队能处理的东西离线的区间问题易对答案进行撤销或增加操作莫队是什么莫队就是通过排序和分块所优化的暴力,为根号算法(数据结构???)算法思路一道例题(入门):给定一个序列,求[l,r]有多少个不同的正整数考虑将序列分块,块大小为Sqrt(n),将操作区间的左端点所在块为第一关键字排序,右端点为第二关键字排序。每一个块中有若干个左端点,右端点为升序排列。设两个指针...原创 2019-07-10 22:38:20 · 145 阅读 · 0 评论 -
JZOJ2866. 【集训队互测 2012】Bomb
DescriptionA 国和 B 国是两个超级大国,长期处于冷战状态;A 国在 B 国中设有 N 个情报站,编号为 1,2,3, …… ,N ,每个情报站有一个坐标 (Xi,Yi) 。但是, A 国的工作人员发现,每个情报站里都被埋上了炸弹!这些炸弹非常特殊 , 只要同时拆除其中的三个炸弹 , 所有炸弹就都不会爆炸了。由于各个情报站联络需要代价 , 拆除炸弹需要花费的总代价为这些炸弹两两...原创 2019-08-03 09:40:16 · 290 阅读 · 1 评论 -
【LCT时间复杂度】JZOJ6257. 【省选模拟8.9】修路
Descriptionn<=1e5Solution考虑颜色覆盖的操作与LCT中的Access操作类似,所以可以(证明)得到连续段颜色的个数之和为nlogn级别的。直接用LCT,每一个splay树都代表同一种颜色,刚开始有n棵,即每一条边都是虚边,然后Access一下,与LCT完全一样,再用个树状数组求逆序对个数。当然离线下来用树链剖分,每条链用一个set维护不同的颜色也可以(难...原创 2019-08-09 20:02:19 · 560 阅读 · 0 评论 -
【吉如一线段树】JZOJ6270. 【省赛模拟8.10】序列
Descriptionai,n<=2e5Solution考虑按照答案分类,假如ddd的倍数为a[1],a[2],..a[k−1],a[k]a[1],a[2],..a[k-1],a[k]a[1],a[2],..a[k−1],a[k],那么区间被1…(a[k-1]-1),(a[2]+1)…n,(a[1]+1)…(a[n]-1)这三个区间包含的区间的答案至少为d,也就是要维护区间取MAX...原创 2019-08-20 12:31:16 · 1362 阅读 · 0 评论 -
JZOJ3690. 【CF418D】Big Problems for Organizers
Description传送门给定一棵树,m次询问x,y,每个点的距离定义为到x和y的最小距离,求所有点的距离的最大值。n,m<=100000Solution找到x到y路径的中点,将树分成两个部分,一边求到x的,一边求到y的。钦定dep[x]>dep[y],那么答案就分为:中点到x路径上伸出去节点距离。中点到LCA上的距离LCA到y上伸出去节点距离。LCA以上的...原创 2019-08-12 07:54:47 · 178 阅读 · 0 评论 -
JZOJ6362. 【NOIP2019模拟2019.9.18】数星星(star)
DescriptionSolution考虑分治,将每一个询问挂在包括它的最大的区间中。只考虑中点往右的区间的贡献,那么每一个点对于覆盖它的最早的时间有一个贡献。我们建一个虚树,并且用并查集路径压缩,即覆盖过的点不再走那么就可以保证时间了。而覆盖的贡献我们记录在一个以时间为下标的树状数组中,便于之后的查询。然后再考虑从中点往左边处理覆盖操作,并同时处理左端点在当前位置的询问。但是我们...原创 2019-09-21 14:28:23 · 318 阅读 · 0 评论 -
【LCT维护MST】JZOJ5433. 【NOIP2017提高A组集训10.28】图
Description有一个n个点A+B条边的无向连通图,有一变量x,每条边的权值都是一个关于x的简单多项式,其中有A条边的权值是k+x,另外B条边的权值是k-x,如果只保留权值形如k+x的边,那么这个图仍是一个连通图,如果只保留权值形如k-x的边,这个图也依然是一个连通图。给出q组询问,每组询问给出x的值,问此时这个无向连通图的最小生成树权值是多少。对于100%的数据,1<=n,q&...原创 2019-09-24 16:36:47 · 216 阅读 · 0 评论 -
JZOJ5522.【GDOI2018模拟】A
DescriptionSOLUTION我们假设一个点的贡献为右边小于它的点的个数当有一个操作x,对于所有x&lt;ya[x]&gt;a[y]的y,y的贡献就变成了0.a[x]&lt;=a[y]的y,由于小于a[x](即小于a[y])的数只是排序换位置,y的贡献不变。因此每一个位置只会受在它前面的询问并权值大于它的点的影响,并变为0(所以排序什么的都是骗人的)所以我们可以考虑...原创 2018-12-01 16:39:22 · 221 阅读 · 0 评论