随笔分类 - 数据结构__树形结构__线段树
摘要:题解[NOIP2017] 列队 "题面" 解析 看到这题时感觉这个编号很难维护啊? 后来看了 "lzf大佬的题解" 才会.. 首先,考虑一个稍微暴力的做法, 维护每一行的前$m 1$个人和最后一列的$n$个人的编号, 也就是用$n+1$个区间分开维护 设当前询问$(x,y)$, 那么就在第$x$行中
阅读全文
摘要:题解 [ZJOI2010]基站选址 "题面" 解析 首先考虑一个暴力的DP, 设$f[i][k]$表示第$k$个基站设在第$i$个村庄,且不考虑后面的村庄的最小费用. 那么有$f[i][k]=\min(f[j][k 1]+cost(j,i))$,$j\in[1,i 1]$ 其中$cost(j,i)$
阅读全文
摘要:"题面" 解析 一开始看上去毫无思路啊. 但想通了就很很简单. 我们枚举每种长度的边作为最大的边, 于是长度比当前大的边就要砍掉, 而长度比当前小的边只能留下小于等于当前长度的边数, 砍掉代价最小的几条就好了. 用权值线段树维护一下即可. cpp include include include in
阅读全文
摘要:"题面" 解析 这题考试时刚了四个小时. ~~结果还是爆零了~~ 主要就是因为$lca$找伪了. 我们先考虑没有操作1,那就是裸的线段树. 在换了根以后,主要就是$lca$不好找(分类讨论伪了). 我们将一开始以$1$为根的图作为原图. 仔细思考一下, 我们会发现只有当原图上的$lca$在$1$和当
阅读全文
摘要:"题面" 解析 首先,我们考虑下暴力的做法: 每次将一个任务的重要度加入到它的区间中, 询问的时候就直接加前$k$大. 然而,这样肯会炸的(都说了是暴力了). 其实,我们可以转化一下区间修改(因为区间修改似乎并不好做哈qwq) 利用前缀和与差分的思想(不会的请自行百度下), 将要修改的区间转化为单点
阅读全文
摘要:众所周知,线段树是一个非常好用~~也好写~~的数据结构, 因此,我们今天的前置技能: 线段树 . 然而,可持久化到底是什么东西? 别急,我们一步一步来... step 1 首先,一道简化的模型: 给定一个长度为$n$的序列,$m$个操作,支持两种操作: 修改某个点$i$的权值 查询历史上某个版本$u
阅读全文

浙公网安备 33010602011771号