数据结构
文章平均质量分 92
花淇淋
这个作者很懒,什么都没留下…
展开
-
「SDOI2019」世界地图
Address loj3112 luogu P5360 bzoj5531 Solution 对于 1≤i≤m1\leq i\leq m1≤i≤m,考虑分别预处理经度在 [1,i][1,i][1,i],[i,m][i,m][i,m] 的点的 MST\text{MST}MST。询问的时候合并 [1,l−1][1,l-1][1,l−1] 和 [r+1,m][r+1,m][r+1,m] 即可。 先考虑怎么...原创 2020-01-03 19:37:55 · 362 阅读 · 0 评论 -
[BZOJ3510][洛谷P4299]首都
Solution 显然首都即树的重心。 考虑动态维护每棵树的重心,当连边 x→yx→yx→y 时 设连边之前,x,yx,yx,y 所在树的重心为分别为 Gx,GyG_x,G_yGx,Gy,那么连边后新树的重心 zzz 一定在 Gx→GyG_x→G_yGx→Gy 的路径上。 记路径上 AuA_uAu 和 BuB_uBu 是路径上某一点 uuu 的左右两个相邻节点,且满足 Gx,G...原创 2019-05-22 14:33:27 · 309 阅读 · 0 评论 -
[ZJOI2019][洛谷P5327]语言
Solution 记 s→ts→ts→t 为包含点 uuu 的一条路径,显然所有的 s→ts→ts→t 能组成一个连通块(因为路径可以拆成 s→u,u→ts→u,u→ts→u,u→t),而这个连通块的边数就是能与 uuu 开展贸易活动的城市个数。 记这个连通块为 G(u)G(u)G(u),显然 G(u)G(u)G(u) 也能看成:连通所有点 s,ts,ts,t 和 uuu 的最小生成树 ...原创 2019-05-03 12:07:39 · 184 阅读 · 0 评论 -
[BZOJ4025]二分图 线段树分治
Solution 以时间 [0..T][0..T][0..T] 为下标建一棵线段树 线段树上的每个区间维护一个边集 对于一条边 iii,它存在的时间区间为: [starti,endi−1][start_i,end_i-1][starti,endi−1] 把 [starti,endi−1][start_i,end_i-1][starti,endi−1] 区间拆成线段树上的 O(logT)...原创 2019-03-27 13:00:25 · 218 阅读 · 0 评论 -
[洛谷P3345][BZOJ4573][ZJOI2016]大森林
Solution 首先发现把 222 操作都丢到最后处理不会影响答案 那么可以把所有修改操作拆成在 lll 处加入,在 r+1r+1r+1 处删除 把所有操作读入之后按树的编号顺序处理 动态维护一棵树,即处理第 iii 棵树后,这棵树就是第 iii 棵树的结构 但是不维护原树结构,而是维护一个等价的东西: 给每个 111 操作建一个虚点,每个 000 操作(也可以说是原树上的每个点)建一个...原创 2019-03-03 20:38:53 · 128 阅读 · 0 评论 -
[BJOI2014][BZOJ4530][洛谷P4219]大融合
Solution LCTLCTLCT,对每个节点 uuu 维护两个信息:s[u],si[u]s[u], si[u]s[u],si[u] 记 sze[u]sze[u]sze[u] 为实子树的大小,即 splaysplaysplay 上的子树大小 令 s[u]=si[u]+sze[u]s[u]=si[u]+sze[u]s[u]=si[u]+sze[u] si[u]si[u]si[u] :虚子树的大小...原创 2019-02-10 21:31:37 · 219 阅读 · 0 评论 -
[BZOJ4869][洛谷P3747][六省联考2017]相逢是问候
Solution 建议先做这题 根据扩展欧拉定理ab%p≡ab%ϕ(p)+ϕ(p)%p,b≥ϕ(p)a^b\% p ≡ a^{b \%\phi(p)+\phi(p)}\% p_,b≥\phi(p)ab%p≡ab%ϕ(p)+ϕ(p)%p,b≥ϕ(p)ab%p≡ab%ϕ(p)%p,b<ϕ(p)a^b\% p ≡ a^{b \%\phi(p)}\% p,b<\phi(p)...原创 2019-02-04 12:31:39 · 270 阅读 · 0 评论 -
[WC2014][BZOJ3435][洛谷P3920]紫荆花之恋
分析 动态点分治 +++ treap +++ 替罪羊树的思想 容易看出,这题是一个动态的点分治。 静态的点分治是将重心作为分治中心,动态的分治,每次重心都会变,所以就不能以重心作为分治中心。 用重心作为分治中心,是因为这样最能省时间,那么是否可以不用重心呢,显然是可以的。 接下来说一说分治中心的问题。 如图,1是一个分治中心,2,3,4是分出来的子树的分治中心。介绍一个概念:点分树,即所有分治中...原创 2019-02-03 15:38:11 · 299 阅读 · 0 评论 -
[洛谷P4425][BZOJ5286][HNOI/AHOI2018]转盘
Solution 如果一种最优解是:在时刻ttt从位置xxx开始,从时刻t+1t+1t+1开始共有t1t1t1个时刻选择当前物品,有t2t2t2个时刻选择下一个物品,那么这和在时刻t+t1t+t1t+t1从位置xxx开始,从时刻t+1t+1t+1开始都不选择当前物品,实际上是等价的 那么只要考虑不停留的情况,问题转化为选择一个最小的开始时间bx(t≥0)b_{x}(t≥0)bx(t≥0),使得...原创 2019-02-03 15:30:26 · 209 阅读 · 0 评论 -
[洛谷P4198][BZOJ2957]楼房重建
【题目大意】 数轴上有nnn个建筑,初始高度均为000 共mmm次操作,每次在位置xix_ixi上修建高度为yiy_iyi的建筑,建筑的权值为yi/xiy_i/x_iyi/xi,求以第一个高度>0>0>0的建筑开始,字典序最小的权值上升子序列的长度 n,m,xi<=100000,yi<=1000000000n,m,x_i&am...原创 2019-02-02 22:14:31 · 202 阅读 · 0 评论 -
[洛谷P4117][CF896E][Ynoi2018]五彩斑斓的世界
【题目大意】 给定一个长度为nnn的序列aaa,有mmm次操作: (1).把区间[l,r][l,r][l,r]中大于vvv的数减去vvv (2).查询区间[l,r][l,r][l,r]中vvv的出现次数 所有输入均在[1,100000][1,100000][1,100000]范围内 【算法分析】 这种神仙题当然是分块 如果只考虑整块操作,那么处于同一块且相同的数,每次要么一起减vvv要么一起...原创 2019-02-01 21:29:37 · 566 阅读 · 0 评论 -
[BZOJ2588]Count on a tree
第一步:离散化 即:把节点的点权换成它在所有点权中的排名(它是第几小的) 将存储点权的数组复制一份之后排序,去重,然后将原先的每个点权在去重后的数组里进行二分查找,就可以得到它的排名。 第二步:建主席树 每个节点维护它到根的路径上的权值线段树,所以每个节点可以利用它的父节点更新,所以将整棵树dfs一遍,在此过程中建树。 第三步:求解 用u点的主席树+v点的主席树-lca(u,v)的主席原创 2018-01-27 08:27:28 · 159 阅读 · 0 评论