摘要:
[HNOI2015]菜肴制作贪心的证明 先吐槽一句为什么网上都没人证这个东西,我觉得一点也不显然啊。。。 判环不用说了,现在处理一个DAG。考虑按题意模拟:建反图(边从后选的点连向先选的点),每次找全局最小的点,并把候选集合缩小为这个点在图上的所有后继,再在当前候选集合中选择最小的点并把候选集合更新 阅读全文
摘要:
CF1153F Serval and Bonus Problem 官方的解法是$O(n ^ 2)$的,这里给出一个$O(n \log n)$的做法。 首先对于长度为$l$的线段,显然它的答案就是长度为$1$的线段的答案$\times l$,这样做只是为了方便计算。 考虑对于数轴上区间$[0,1]$内 阅读全文
摘要:
[NOI2007]货币兑换 "LG传送门" 妥妥的$n \log n$cdq做法。 这题用cdq分治也可以$n \log n$~~但是在洛谷上竟然比一些优秀的splay跑得慢真是见了鬼了看来还是人丑常数大的问题~~ 先推式子 (这一段与其他题解不会有太多不同,已经了解了的同学可以略过,注意一下转移中 阅读全文
摘要:
[HNOI2012]永无乡 "LG传送门" 线段树合并练手题,写这篇博客只是为了给我的 "这篇文章" 找个板子题。 并查集维护连通性,对于不在同一个连通块内的合并操作每次直接合并两颗线段树,复杂度$O(n \log n)$。 阅读全文
摘要:
[HNOI2015]开店 "LG传送门" 蒟蒻表示不会动态淀粉质。 先把点按年龄排序, 设$dis[i]$表示$i$到根的距离。 把我们要算的东西稍微变下形:$ans$ $$ = \sum \limits _{i = l} ^r (dis[i] + dis[u] 2 dis[lca(i, u)]$$ 阅读全文
摘要:
[SCOI2016]幸运数字 "LG传送门" 为了快乐,我们用树剖写这题。 强行树剖,线段树上每个结点维护一个线性基,每次查询暴力合并。 瞎分析一波复杂度:树剖两点之间$\log n$条重链,每条重链在线段树上最多合并$\log n$次,合并两个线性基最多需要$\log m$次插入,每次插入$\lo 阅读全文
摘要:
[WC2011]最大XOR和路径 "LG传送门" 需要充分发掘经过路径的性质:首先注意不一定是简单路径,但由于统计的是异或值,重复走是不会被统计到的,考虑对于任意一条从$1$到$n$的路径的有效部分是什么。最简单的情况就是走一条链,有时候我们会从这条链走出去,走一段路径之后走一个环,再沿这条路径回到 阅读全文
摘要:
线段树分裂合并 我先接触的是线段树合并所以先讲线段树合并。 首先,用来合并的线段树必须是动态开点的。线段树合并所做的事就是合并两棵动态开点线段树的信息,对于两棵动态开点线段树,可能会存在一些公共节点,我们所要做的就是合并这些节点的信息,然后把其他节点的信息继承。理清思路之后,剩下的事就是。设初始信息 阅读全文
摘要:
[NOIp2016]天天爱跑步 "LG传送门" 对于一个人,他的路程会分为两段,一段向上(根),一段向下,考虑在向上过程中他能产生贡献的观察者具有什么性质:设出发点深度为$dep[x]$,观察者深度为$dep[y]$,观察的时间为$t$,需满足$dep[x] dep[y] = t$,换句话说就是$d 阅读全文
摘要:
CF1111E Tree 过年了,洛咕还没爬这次的题,先放个 "CF的链接" 吧。 补个 "LG传送门" 。 对于每个询问点$x$,设它的祖先即不能和它放在同一个集合中的点的个数为$f[x]$,设$dp[i][j]$表示前$i$个询问点放在$j$个非空集合中的方案数,注意这里“前$i$个”的意义,这 阅读全文
摘要:
[NOI2016]区间 "LG传送门" 考虑到这题的代价是最长边减最短边,可以先把边按长度排个序,双指针维护一个尺取的过程,如果存在包含某个点的区间数$\ge m$,就更新答案并把左指针右移,这样做的正确性显然。考虑怎样维护是否有覆盖数$\ge m$的点,将线段的端点离散化之后用一棵权值线段树直接维 阅读全文
摘要:
[IOI2018] werewolf 狼人 "LG传送门" kruskal重构树好题。 日常安利博客 "文章" 这题需要搞两棵重构树出来,这两棵重构树和我们平时见过的重构树有点不同(据说叫做点权重构树?),根据经过我们简化的建树方法,这两棵树不再是二叉树,但是仍具有kruskal重构树的优秀性质,建 阅读全文
摘要:
[CQOI2012]组装 "LG传送门" 首先有一个必须要能推的式子:设第$i$种零件选的生产车间位置为$x _ i$,组装车间位置为$x$, 则总的花费为 $$f(x) = \sum \limits _{i = 1} ^ n (x x_i) ^ 2$$ $$= n x^ 2 2 \sum \lim 阅读全文
摘要:
[ONTAK2010]Peaks kruskal重构树练手题。 "LG传送门" 竟然不强制在线?看到离线水过很不爽: "B站强制在线版传送门" 看到“询问从点$v$开始只经过困难值小于等于$x$的路径”,马上想到kruskal重构树。先把重构树搞出来,可以先用类似NOI2018归程( "题解" )的 阅读全文
摘要:
[NOI2018]归程 "LG传送门" kruskal重构树模板题。 "另一篇文章" 里有关于kruskal重构树更详细的介绍和更板子的题目。 题意懒得说了,这题的关键在于快速找出从查询的点出发能到达的点(即经过海拔高于水位线的边能到达的点)中距离$1$号点最近的距离。 看上去可以kruskal,假 阅读全文
摘要:
kruskal重构树 kruskal重构树,顾名思义,是在kruskal的时候顺便搞出来的一棵重构树,具体地说是一个堆。 先说说这个东西是怎么搞出来的吧:默认事先把边按边权从小到大排序,在kruskal的时候,如果当前加入的边连接的两个点$x$和$y$不在同一个连通块中,就新建一个节点作为$x$和$ 阅读全文
摘要:
CF293B Distinct Paths 搜索。 "LG传送门" 看数据范围$n,m$显然是不可能到$1000$的,可以知道当$n + m 1 k$时无解。一下就把数据范围降到$10$。 考虑枚举每个点的颜色,每个位置的颜色不能和它左边和上方的颜色相同,现在需要快速计算填每种颜色的方案数,到这里分 阅读全文
摘要:
[HNOI2013]比赛 搜索。 "LG传送门" 直接暴力有60,考场上写的60,结果挂成40。 考虑在暴力的同时加个记忆化,把剩下的球队数和每支球队的得分情况hash一下,每次搜到还剩$t$个队的时候就在哈希表里找一下,有就拿来算答案,没有就把这次的结果存进哈希表。复杂度$O($能过$)$。 阅读全文
摘要:
[SDOI2018]战略游戏 这题是 "道路相遇" ( "题解" )的升级版,询问的两个点变成了$S$个点。 "LG传送门" 还是先建出圆方树,考虑对于询问的$S$个点,答案就是圆方树上能包含这些点的最小连通块中的圆点个数减去$S$。问题变成了怎样求这样的连通块中的圆点个数,直接给结论吧:先搞出树的 阅读全文
摘要:
道路相遇 基础圆方树。 不会圆方树看我 "另一篇文章" "LG传送门" 发现必经之路上的点一定是 简单路径 上的点,可以自己手玩。处理无向图上的简单路径,考虑把圆方树建出来,发现答案就是圆方树上两点间圆点个数。由于广义圆方树上圆方点相间,可以用深度表示答案,发现答案就是$(dep[u] + dep[ 阅读全文
摘要:
[APIO2018] Duathlon 铁人两项 "LG传送门" 圆方树+简单DP。 不会圆方树的话可以看看 "我的另一篇文章" 。 考虑暴力怎么写,枚举两个点,答案加上两个点之间的点的个数。 看到题面中的一句话: 考虑到安全因素,选择的路径经过同一个点至多一次。 换句话说就是 简单路径 ,用(广义 阅读全文
摘要:
upd:过完年回来惊闻仙人掌在OI考纲上被咔嚓了,所以这篇文章中仙人掌的部分可以跳过或者略读,但是用于处理无向图的(广义)圆方树还是建议有一定基础的读者详细了解。 仙人掌&圆方树 仙人掌是一种每条边最多出现在一个环中的无向连通图~~我也不知道为什么要叫仙人掌~~。 对于每一个环,如果我们删去一条边就 阅读全文
摘要:
[SHOI2008]仙人掌图 "LG传送门" 还不会仙人掌的同学可以看看我对仙人掌知识的一些梳理。 题意就是求仙人掌的直径,直径定义为图中最短路径最长的两点间的最短路径长度。 按照套路,先考虑求树的直径我们是怎么做的。设$f[i]$表示$i$往下最长链的长度,$j$是$i$的儿子,转移和更新答案就是 阅读全文
摘要:
[JOISC2018]道路建设 "LOJ传送门" 考的时候打的大暴力,其实想到了LCT,但是思路有点没转过来。~~就算想到了估计也不能切,我没有在考场写LCT的自信。。。~~ 其实这题不是让你直接用LCT维护答案,只是借用了LCT的架构,让权值相同的点在同一棵splay中,用一棵splay顶端的点的 阅读全文
摘要:
[BZOJ3451]normal 点分治,NTT 好久没更博了,咕咕咕。 "BZOJ3451" 权限题,上darkbzoj交吧。 一句话题意,求随机点分治的期望复杂度。 考虑计算每个点对的贡献:如果一个点在点分树上是另一个点的祖先,那么这个点对另一个点的贡献就是1,这样的话,这个点就必须是这两个点之 阅读全文
摘要:
[COCI2009]Dvapravca "LG传送门" 先给出考场上的$O(n^3)$乱搞方法:枚举一个蓝点和一个红点,找出过着两个点的直线,再枚举蓝点找出这条直线最多能往两边扩展多宽,最后枚举红点计算贡献。 注意在确定一条直线能往两边扩展多宽时不要求点到直线的距离,否则常数会太大,只要求竖直方向的 阅读全文
摘要:
CF833B The Bakery "LG传送门" 线段树优化DP。 其实这是很久以前就应该做了的一道题,~~由于颓废~~一直咕在那里,其实还是挺不错的一道题。 先考虑$O(n^2k)$做法:设$f[i][j]$表示$1$到$i$之间分割$j$次得到的最大值,$g[i][j]$表示$i$到$j$之间 阅读全文
摘要:
[SCOI2010]传送带 "LG传送门" 三分法模板。 关于为什么可以三分,我选择感性理解,有人证明了,总之我是懒得证了。 假设路径是$A \to E \to F \to D$,$E$和$F$分别是从$AB$到平面上的拐角和从平面上到$CD$上的拐角。首先三分$E$的位置,在此基础上三分$F$的位 阅读全文
摘要:
睡觉困难综合征 "LG传送门" 树剖好题。 做这道题之前,请先做一做 "[NOI2014]起床困难综合症" 。记得我在我的 "树链剖分总结" 中的第一句话吗?这道题就是那道的上树带修版本。 首先简单口胡一下起床困难综合症:只需要把每一位初始状态为零和为一的结果预处理出来,这个过程可以通过把$0$和$ 阅读全文
摘要:
CF1017G The Tree "LG传送门" 树链剖分好题。 乍一看还以为是道沙比题,然后发现修改操作有点不一样。 但是如果你对基本操作还不太熟练,可以看看我的 "树链剖分总结" 有三个操作: 1. 从一个点往下染黑,是黑色节点就继续染,一直染到白色节点为止; 2. 染白一棵子树; 3. 查询一 阅读全文
摘要:
CF1039E Summer Oenothera Exhibition "LG传送门" 根号分治好题。 可以先看我的 "根号分治总结" 。 题意就是给出长度为$n$的区间和$q$组询问以及一个$w$,每次询问一个$k$,问最少把一段给定区间划分几次可以满足每一段划分出的子区间的极差不超过$w k$( 阅读全文
摘要:
根号分治 根号算法——不只是分块。 有时我们会碰到这样一类问题,长度为$n$的序列,$m$个询问(通常$n$和$m$同阶),可能存在两种比较显然的方法,一种是$O(n^2)$预处理$O(1)$回答,一种是不预处理$O(n)$回答$m$个询问,这两种方法都是$O(n^2)$的。考虑是否存在一种策略能“ 阅读全文
摘要:
CF1039D You Are Given a Tree "LG传送门" 根号分治好题。 这题可以整体二分,但我太菜了,不会。 根号分治怎么考虑呢?先想想$n^2$暴力吧。对于每一个要求的$k$,一遍dfs直接贪心,能拼成链就直接拼,正确性不用我证明吧。 考虑对于$k \le \sqrt n$,直接 阅读全文
摘要:
[BJOI2017]树的难题 "LG传送门" 点分治+线段树合并。 我不会写单调队列,所以就写了好写的线段树。 考虑对于每一个分治中心,把出边按颜色排序,这样就能把颜色相同的子树放在一起处理。用一棵动态开点线段树维护颜色不同的子树的信息,另一棵动态开点线段树维护颜色相同的子树的信息,同时按照题目要求 阅读全文
摘要:
快递员 "LG传送门" 点分治好题。~~然而似乎不是一般意义上的点分治?~~ 首先要看清楚题,~~我就被题意卡了~~,这道题是在一棵树上给出$m$个点对,求树上一个点,使得对于其中任意一个点对,这个点到那两个点的距离和的最大值最小。乍一看还以为要二分,发现二分做不了。 先想$nm$暴力,需要发现一个 阅读全文
摘要:
点分治 蒟蒻迟迟没法开点分治的坑,主要是因为最近找了几道点分治题,全都可以用 "长链剖分" 写,由于博主又懒又菜,所以点分治没有得到练习的机会。终于,最近安排了专题分享,最菜的chd捡了一个分治专题,不得不学学这些东西了。 举个简单的例子,我们对树上的路径有一些询问。我们考虑对于树上的任意一个点,它 阅读全文
摘要:
CF161D Distance in Tree UPD:憨憨博客 公开处刑 "LG传送门" 长链剖分板子题。 长链剖分那么好写,跑得又快,为什么要写点分治呢?~~完了我现在看一道点分治题就想写长链剖分~~ 如果还不会长链剖分请看 "我博客" 。 没什么好说的,时空复杂度$O(n)$直接洛谷rank1 阅读全文
摘要:
[WC2010]重建计划 "LG传送门" 又一道长链剖分好题。 这题写点分治的人应该比较多吧,但是我太菜了,只会长链剖分。 如果你还不会长链剖分的基本操作,可以看看 "我的长链剖分总结" 。 首先一看求平均值最大,马上想到套个二分,每次把边权变为原来的边权减去二分的答案,看树上有没有长度在$L$和$ 阅读全文
摘要:
[FJOI2014]最短路径树问题 "LG传送门" "B站传送门" 长链剖分练手好题。 如果你还不会长链剖分的基本操作,可以看看 "我的总结" 。 这题本来出的很没水平,就是dijkstra(反正我是不用SPFA)的板子强行套个点分治的板子,两者之间没有任何关联。但我偏要写长链剖分。 首先给你的是一 阅读全文
摘要:
[Vani有约会]雨天的尾巴 "LG传送门" 线段树合并入门好题。 先别急着上线段树合并,考虑一下这题的暴力。一看就是树上差分,对于每一个节点统计每种救济粮的数量,再一遍dfs把差分的结果统计成答案。如果暴力统计,即对于每一个点开一个数组记录每种救济粮的数量,统计时再$O(S)$(设$S$为救济粮的 阅读全文