05 2021 档案

该文被密码保护。
posted @ 2021-05-26 18:57 __Anchor 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-05-24 12:31 __Anchor 阅读(1) 评论(0) 推荐(0)
摘要:题目 CF5E Bindian Signalizing 分析 单调栈$+dp$ 。 首先我们要把环处理成链,这道题因为特性我们可以直接把最高的山选成第一个就好了。 然后可以使用单调栈,维护一个单调递减的单调栈,更新答案就是相当于当前这个点之前所有比这个点小的都由这个点更新,完了放进栈里面,注意判断相 阅读全文
posted @ 2021-05-17 21:18 __Anchor 阅读(65) 评论(0) 推荐(0)
摘要:题目 P2152 [SDOI2009]SuperGCD 高精度 \(GCD\) 。 分析 可以压位高精+辗转相除来做,但是没有模板。 代码 交的 \(python3\) 水的,等模板。 阅读全文
posted @ 2021-05-17 21:14 __Anchor 阅读(35) 评论(0) 推荐(0)
摘要:题目 P5338 [TJOI2019]甲苯先生的滚榜 分析 平衡树模板题。查询一个数的排名。 代码 #include<bits/stdc++.h> using namespace std; template <typename T> inline void read(T &x){ x=0;char 阅读全文
posted @ 2021-05-17 21:12 __Anchor 阅读(48) 评论(0) 推荐(0)
摘要:题目 P5324 [BJOI2019]删数 分析 动态开店线段树+分析性质。 首先我们要找出这个删数操作的性质,也就是:显然题中数的顺序没有关系,于是可以直接在值域上来看,然后发现如果把数轴画出来再按照个数在每一个映射点向前映射,需要修改的数的个数就是数轴上空的个数。 那么现在考虑有修改操作的时候: 阅读全文
posted @ 2021-05-17 21:11 __Anchor 阅读(54) 评论(0) 推荐(0)
摘要:题目 P5327 [ZJOI2019]语言 分析 线段树合并+树上差分。 首先我们发现答案其实就是:对于每一个点来说的连通块大小之和。 那么现在问题在于怎么来维护这个连通块的大小。 我们可以考虑对每一个点开一个线段树,保存:\(dfn\) 序列对应的点被路径覆盖次数和长度。 然后对于这样一类树上路径 阅读全文
posted @ 2021-05-17 21:02 __Anchor 阅读(54) 评论(0) 推荐(0)
摘要:题目 BSOJ1527&BZOJ4129 Haruna’s Breakfast 树上询问路径 \(mex\) 且带单点修改。 分析 首先区间 \(mex\) 问题可以使用莫队+值域分块或者回滚莫队解决。 这里带修的话就需要带修莫队+值域分块或者带修回滚莫队。 再加上这是树上,所以可以树分块过后莫队即 阅读全文
posted @ 2021-05-13 15:30 __Anchor 阅读(251) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-05-12 20:36 __Anchor 阅读(2) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-05-12 19:57 __Anchor 阅读(0) 评论(0) 推荐(0)
摘要:题目 BSOJ5606【2017山东三轮集训Day7】Easy 给定一棵树,每次询问:点 \([l,r]\) 当中距离点 \(x\) 最近的距离是多少。 分析 点分树+线段树。 点分树的基础应用,首先我们可以把这里点分树上面的线段树拿来维护编号为 \([1,n]\) 的所有结点的到当前点的距离最小值 阅读全文
posted @ 2021-05-12 00:05 __Anchor 阅读(54) 评论(0) 推荐(0)
摘要:题目 BSOJ1425&BZOJ4317 Atm的树 多次询问距离一个点的第 \(k\) 小距离。 分析 点分树+二分+线段树 首先,我们要明确的是,求第 \(k\) 小,是可以二分答案然后直接遍历判断个数的。 于是这就启示我们直接二分答案,那么这道题目就变成模板了,也就是求距离 \(x\) 小于等 阅读全文
posted @ 2021-05-11 23:41 __Anchor 阅读(43) 评论(0) 推荐(0)
摘要:题目 BSOJ1470&BZOJ4372 烁烁的游戏 分析 点分树+线段树 首先我们可以发现,这个和模板题的区别就是那里是单点修改区间查询,但是这里是区间修改单点查询。 于是在线段树上把这两个操作的对应区间反过来就好了。 具体可以见代码。 代码 #include<iostream> #include 阅读全文
posted @ 2021-05-11 23:35 __Anchor 阅读(44) 评论(1) 推荐(0)
摘要:题目 SP6779 GSS7 - Can you answer these queries VII 分析 明显可以树剖/\(LCT\),转化成经典问题:区间动态查询最大子段和。 树剖的话无非是每次求完了还要把 \(log\) 个区间再拼起来。 \(LCT\) 的话就只拼数据结构上的了(指 \(Spl 阅读全文
posted @ 2021-05-09 23:41 __Anchor 阅读(57) 评论(0) 推荐(0)
摘要:题目 P2218 [HAOI2007]覆盖问题 给定一堆点,要求使用三个长为 \(L\) 的正方形把所有点覆盖,求 \(L\) 的最小值。 分析 发现只有三个正方形,但是我们如果把四个边界求出来,这样有四个,所以肯定有两个边界同时被一个正方形覆盖吗,也就是一定有一个正方形卡在一个角上。 不妨设这就是 阅读全文
posted @ 2021-05-08 11:08 __Anchor 阅读(49) 评论(0) 推荐(0)
摘要:引入 众所周知,\(C++11\) 的很多容器都非常好用,但是同时我们考试是不支持 \(C++11\) 的,于是我们必须手写,那么这里就来讨论一下手写两个非常好用的容器:\(unorderedset\) 和 \(unorderedmap\) 。 准确的说是不去重的 \(unorderedmultis 阅读全文
posted @ 2021-05-08 09:08 __Anchor 阅读(62) 评论(0) 推荐(0)
摘要:万年前的题解,可能会体验不好,慎看。 1.题意 P3709 大爷的字符串题 因为出题人语死早,原题意比较毒瘤,所以这里整个舒服点的题意: 静态询问区间众数对应的该众数个数 (至于为什么已经有daolao给出证明了) (注意答案要取负) 2.思路 由于是静态问题,且询问的是区间众数,所以很容易我们可以 阅读全文
posted @ 2021-05-07 19:35 __Anchor 阅读(41) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-05-07 13:59 __Anchor 阅读(5) 评论(0) 推荐(1)
摘要:题目 BSOJ3392【省选模拟】树上的询问 分析 点分治。 点分治入门题,首先这题可以直接做,也可以转化成 "小于等于 \(k\) 的减掉 小于等于 \(k-1\) 的" ,然后相减来做。 两者皆可。 代码 #include<bits/stdc++.h> using namespace std; 阅读全文
posted @ 2021-05-07 11:43 __Anchor 阅读(40) 评论(0) 推荐(0)
摘要:题目 给一棵基环树,求树上路径长度 \(\ge k\) 的路径条数。 分析 点分治+基环树 \(Trick\) 首先基环树的一个基本处理办法就是先断掉一条环上的边,当成树处理后,再考虑这一条边的贡献。 这里就是必须经过这一条边的路径。 我们可以考虑这一条边的两端子树,显然就相当于拼接两条路径。 对于 阅读全文
posted @ 2021-05-07 11:34 __Anchor 阅读(76) 评论(0) 推荐(0)
摘要:题目 分析 拼接字符串,显然是字符串哈希来维护这个信息。 于是把所有的前缀哈希串预处理一下,再预处理每一个前缀对应的后缀哈希串,然后就可以直接询问当前的串作为后缀是否可以有一个前缀,以及当前作为前缀是否存在后缀。 然后就做完了。 代码 口胡的,题解代码: #include<bits/stdc++.h 阅读全文
posted @ 2021-05-07 11:25 __Anchor 阅读(58) 评论(0) 推荐(0)
摘要:题目 分析 点分治+乘法逆元。 首先可以直接点分治,现在尝试拼接两条路径。 我们点分治拼接路径的办法其实很容易,我们可以利用原题中的“等式”变换一下就得到我们可以处理的信息。 比如这道题,我们可以把之前所有的路径可得到的权值乘积用一个哈希表存起来,然后我们可以直接查询当前路径的逆元的 \(k\) 倍 阅读全文
posted @ 2021-05-07 11:20 __Anchor 阅读(50) 评论(0) 推荐(0)
摘要:题目 P5072 [Ynoi2015] 盼君勿忘 分析 莫队。 首先这道题有区间限制,数据范围也很明显,可以考虑离线莫队。 然后我们发现可以对于每一个数来算贡献,但是不好直接计算其出现次数,考虑转化。 发现其实可以转化成 \(2^{r-l+1}-2^{r-l-k+1}\) 次(全局的减掉不出现的,剩 阅读全文
posted @ 2021-05-07 00:19 __Anchor 阅读(57) 评论(0) 推荐(0)
摘要:题目 P4103 [HEOI2014]大工程 分析 虚树$+dp$。 很明显其实题目就是建出虚树,然后对于三问分别考虑: 第一问就是可以考虑计算每一条边的贡献,也就是左端的 \(siz\) 和右端的 \(siz\) 的乘积,就是这条边经过次数。 二三问就是经典的树的直径的 \(dp\) 做法。 代码 阅读全文
posted @ 2021-05-07 00:05 __Anchor 阅读(71) 评论(0) 推荐(0)
摘要:题目 CF613D Kingdom and its Cities 给定一棵树,每次给定一些关键点,要求割掉最少的点使得这些点两两之间不连通。 分析 虚树。 首先很明显是个虚树,于是可以直接建虚树,然后就开始 \(dp\)。 我们可以使用“状态机”这样的模型:用状态的 0/1 来规定当前点选/不选。 阅读全文
posted @ 2021-05-07 00:02 __Anchor 阅读(49) 评论(0) 推荐(0)
摘要:题目 P2495 [SDOI2011]消耗战 一棵树,边有边权,每次给 \(m\) 个关键点,要求求出使得这 \(m\) 个点不能从根节点出发到达,需要断掉的边的边权总和的最小值。 分析 虚树模板题。 首先看到特征关键点,还有数据范围的求和符号,很明显是虚树。 于是我们可以发现题目要求的,我们可以先 阅读全文
posted @ 2021-05-06 23:55 __Anchor 阅读(62) 评论(0) 推荐(0)
摘要:题目 P3320 [SDOI2015]寻宝游戏 分析 虚树。 首先发现题目其实就是让我们求一个虚树,走过其所有顶点一个来回的贡献。 易知这样的路径就是将点 \(dfn\) 序排序后从小到大依次走一遍。 那么答案也很显然是 但是这里直接建虚树不好做,因为有单点修改。 于是考虑用一个 \(set\) 来 阅读全文
posted @ 2021-05-06 23:33 __Anchor 阅读(51) 评论(0) 推荐(0)
摘要:题目 P6670 [清华集训2016] 汽水 给一棵树,边有边权,要求找到一条路径使得其平均值和 \(k\) 最接近。 分析 首先树上路径容易想到点分治。 然后发现这可以套一个 0/1 分数规划,于是我们可以把所有的边权减掉 \(k\),再二分 \(mid\)。 现在的问题就是判断了。 我们发现答案 阅读全文
posted @ 2021-05-06 23:25 __Anchor 阅读(58) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-05-04 18:26 __Anchor 阅读(7) 评论(1) 推荐(2)
摘要:题目 P6326 Shopping 分析 首先发现很明显是树上多重背包。 于是可以考虑设状态 \(dp[x][i]\) 表示(必选$x$)和其子树连通块,且背包容量为 \(i\) 时的最大价值。 直接单调队列 \(dp\) ,明显是 \(O(n^2m)\) 。 那么考虑优化,我们发现这里的难点无非就 阅读全文
posted @ 2021-05-03 23:51 __Anchor 阅读(57) 评论(0) 推荐(0)
摘要:题目 P3060 [USACO12NOV]Balanced Trees G 给出一棵树,每个节点一个括号,可能左也可能右,求树上一条合法括号路径的最大嵌套层数。 分析 很容易想到点分治,那么现在问题变成如何拼接路径。 由于这样的路径左右顺序会有影响,于是考虑分开处理,也就是拿两个东西分别记从这里出发 阅读全文
posted @ 2021-05-03 23:39 __Anchor 阅读(83) 评论(0) 推荐(0)
摘要:题目 P5306 [COCI2019] Transport 分析 点分治+平衡树。 首先,我们很容易想到这里要使用点分治,然后我们可以考虑如何拼接路径。 发现因为这道题这样的话是有方向的,于是可以考虑维护两个数据结构,一个是从这个点出发,一个是在这个点结束。 那么具体怎么维护呢?我们发现对于一条路径 阅读全文
posted @ 2021-05-03 00:13 __Anchor 阅读(83) 评论(0) 推荐(0)
摘要:题目 P4075 [SDOI2016]模式字符串 求树上两点对数量,满足其路径上结点的字符连接起来是串 \(S\) 可以循环得到的。 分析 首先这类树上统计点对,还有字符串的,通常,因为我们的点分治需要拼接,所有这样的题也一般是 点分治+字符串哈希 来完成。 这道题就是要拼接两个串,那么我们其实就可 阅读全文
posted @ 2021-05-03 00:06 __Anchor 阅读(42) 评论(0) 推荐(0)
摘要:题目 P2993 [FJOI2014]最短路径树问题 给定一个无向图,求出其最短路径树上面的,包含 \(k\) 个点的一条路径,使得这条路径权值尽可能大,并求出有多少条长度为这个的路径(不要求为 \(k\) 个点)。 分析 没意思题,点分治+最短路。 先直接跑最短路后建出树来。 然后如果把点数当作边 阅读全文
posted @ 2021-05-02 23:59 __Anchor 阅读(104) 评论(0) 推荐(0)
摘要:题目 P4149 [IOI2011]Race 给一棵树,每条边有权。求一条简单路径,权值和等于 \(k\),且边的数量最小,求最小个数。 分析 第一问很简单,我们只需要判定即可。 第二问我们其实可以考虑在第一问基础上记录这样的信息:用桶记录值等于当前权值的,且边最小的条数。 然后就可以和模板一样匹配 阅读全文
posted @ 2021-05-02 23:51 __Anchor 阅读(39) 评论(0) 推荐(0)
摘要:题目 P2634 [国家集训队]聪聪可可 转化题意:求权值是 3 的倍数的路径数量。 分析 我们直接把所有路径转化成模 3 意义下的数,然后其实就是询问权值和为 \(0/3\) 的路径个数。 直接套板子即可。 代码 #include<bits/stdc++.h> using namespace st 阅读全文
posted @ 2021-05-02 23:48 __Anchor 阅读(42) 评论(0) 推荐(0)
摘要:题目 P4178 Tree 统计树上距离小于等于 \(k\) 的点对数量。 分析 这里使用容斥法进行计算,当然也可以使用树状数组来解决。 首先我们可以求出当前点所有向下路径两两拼接得到的小于等于 \(k\) 的路径个数,这个可以排序过后双指针扫一遍即可。 但是我们发现这样会有不合法的情况出现,也就是 阅读全文
posted @ 2021-05-02 23:45 __Anchor 阅读(42) 评论(0) 推荐(0)
摘要:题目 P3806 【模板】点分治1 定一棵有 \(n\) 个点的树,多次询问树上距离为 \(k\) 的点对是否存在。 分析 淀粉质模板题。 淀粉质的核心就是其只统计经过当前根结点的路径,即可以把两条路径“拼”起来,同时分治结构保证了其只有 \(log\) 次这样的计算。 常用于统计树上点对数量这样的 阅读全文
posted @ 2021-05-02 23:35 __Anchor 阅读(28) 评论(0) 推荐(0)