随笔分类 - 题目讲解
摘要:前置知识 基环树,二分 思路 首先可以想到,选择集合次数应该被修改次数最多的点决定,所以题目实际要求是使最大操作次数最小。 经典二分模型,问题变为在每个点不超过 \(mid\) 的次修改后是否可以变为单调不降的序列。对于这个问题,考虑贪心,每个点都尽量选比前一个数大的最小值。先图论建模,对于每个值域
阅读全文
摘要:P9020 [USACO23JAN] Mana Collection P - 洛谷 首先我们可以发现贡献实际上是 \(ti_um_u\) ( \(ti_u\) 表示最后一次到达 \(u\) 的时间) ,但是最后到达性质没有最先到达好,所以将贡献转化为 \((s-ti_u)m_u\)( \(ti_u\
阅读全文
摘要:前置知识 SAM,启发式合并,hash 思路 首先,对于后缀树,我们可以理解为是反着建的SAM,所以可以将SAM翻转后数节点数。(如果你熟练掌握后缀树也可以直接做)。 然后,我们可以观察建 SAM 的过程,我们出现了两种点,一种是前缀节点,一种是分裂节点。前缀节点就是我们每次添加一个新字符时新建的节
阅读全文
摘要:前置知识 树型dp 思路 首先是没有思路的,因为题目给的限制很神秘,对于两个各自要到达一些点,要求任意时刻距离不大于 \(d\) 。这个限制非常不好维护与刻画,也不好转化。直接让我烧烤了很久。 看题解后,恍然大悟。我们不要思考全局的具体操作,我们可以直接关注每一条边有没有被经过。首先非常显然的是不会
阅读全文
摘要:前置知识 dp,简单数学 思路 显然我们需要考虑如何取到 \(f_{max}\) ,一个自然的想法是质因数分解,如果放在开头的是 \(p_1^{t_1}p_2^{t_2}..p_n^{t_n}\) 那么结果最长只能是 \(\sum_{i=1}^nt_i\) (后面对答案有贡献的只放小的,每次至少公因
阅读全文
摘要:前置知识 dp,容斥 思路 首先观察到如果没有最后一个限制就非常的好做,就是一个背包问题。但是 \(\gcd\) 该怎么办? 长期学数论的都知道,在数论题中遇到 \(\gcd\) 时,你会掏出莫反尝试推式子。这到题,将题目形式化是 \[\sum_{a_1=l_1}^{r_1}\sum_{a_2=l_
阅读全文
摘要:前置知识 并查集,dp 思路 首先我们发现,对于一个限制最严的限制是单个字符的出现次数。这启示我们字符串中不能出现相同的字符同时每选择一个就必须将整个字符串一起放上去。但是这个整个字符可能不只是给出的,比如给了 \(AB\) 和 \(BC\) 那么一定需要一起选。 这启示我们,对于每个字符串维护前驱
阅读全文
摘要:前置知识 贪心,dp 思路 首先我们要发现一个性质,就对于选择的一段区间一定是首尾相同同时这段区间选择的贝壳一定是首尾,不然我们不要只留有贡献的一部分一定不劣。 所以我们可以设 \(dp_i\) 表示前 \(i\) 可分成任意段的最多柠檬数量。转移比较简单从前面相同的 \(j\) 来转移. \[dp
阅读全文
摘要:简要题意 给出一棵 \(n\) 个节点以 \(1\) 为根的有根树。对于第 \(2\le i \le n\) 个节点,其父亲 \(f_i\) 在 [\(l_i\),\(r_i\)] 中均匀随机。每个树的边有边权,初始为 \(0\)。 现在有 \(m\) 次操作,第 \(i\) 次操作表示将 (\(u
阅读全文
摘要:前置知识 数位dp,区间dp 思路 妙妙题。 看到 求满足一定条件在 \(A,B\le10^{18}\) 之间的数,很显然会想到数位 dp。 所以按照思路,先将问题转化为求 \(1-N\) 之间的数。但是和普通的数位 dp 不同的是,我们在转移时不仅可以在后面加,也可以在前面加。好,我不会了。所以我
阅读全文
摘要:前置知识 拉插,dp。 思路 考虑对于一个序列我们可以将它从小到大排序,然后这些序列的个数就是序列长度的阶乘。为什么要排序,因为考虑 dp 状态里要有用了哪些数,如果不按任何顺序,那么数两两不同的限制就很难刻画,有了排序之后就只需要填更大的数。 设 \(dp_{i,j}\) 表示前 \(i\) 个数
阅读全文
摘要:简要题意 看题面,还是比较好理解的。 前置知识 wqs二分,决策单调性 思路 首先我们回忆一下非加强版的做法。设 \(f_{i,j}\) 表示在前 \(i\) 个村建 \(j\) 个邮局的最小距离总和。转移非常的简单枚举上一段的结尾即可。一段区间建一个邮局显然建在中点最优,带来的贡献可以用前缀和 \
阅读全文
摘要:简要题意 任何数和 \(0\) 的最大公约数是它本身。 小 X 正在研究一个长度为 \(n\) 的数列 \(\{A\}\),他通过查阅资料,偶然间发现了一个叫做“七连击”的式子:\(\sum\limits_{a=1}^n\sum\limits_{b=a+1}^n\sum\limits_{c=b+1}
阅读全文
摘要:简要题意 给你一张图,给你几个点,要求你按顺序以最短路径 走完所有点。你有 \(m\) 次机会将其中的点换成另一个点(换的点是给定的), 你有 \(p_i\) 的概率成功,求最优策略下的路径长度总和的最小期望值。 前置知识 概率与期望(了解即可),最短路,dp 思路 首先因为我们需要走最短路所以我们
阅读全文
摘要:简要题意 给出 \(n\times m\) 的方格,有些格子不能铺线,其它格子必须铺,可以形成多个闭合回路。问有多少种铺法? 前置知识 dp,状压,轮廓线 思路 因为观察到数据范围 \(1\le n,m\le 12\) 所以思考一些搜索,状压等时间复杂度比较高的做法。搜索显然不好维护。考虑状压。 状
阅读全文
摘要:P7054 [NWRRC 2015] Graph题解 前置知识 拓扑排序,贪心 简要题意 给定一张 \(n\) 点 \(m\) 条边的有向无环图,你可以至多添加 \(k\) 条有向边,使得这仍然是一个有向无环图,使得字典序最小的拓扑序的字典序尽量大。 输出这个拓扑序以及方案。 本题思路 在知道DAG
阅读全文
摘要:一个你看起来非常简单实际上并不简单的题。 前置知识 二分,wqs二分(不会也没关系这是今天的主题),dp 本题思路 对于恰好为 \(k\) 的限制我们可以考虑wqs二分,但是直接用 wqs需要有前提条件,比如最关键的这个函数要满足凸/凹性。显然有的一件事,就是如果将定义为答案要求的函数,如 \(f_
阅读全文
摘要:前置知识 树形dp,时间复杂度分析(最重要) 思路 有一个非常简单的思路,最直接的做法是设 \(dp_{u,i,0/1,0/1}\) 表示树上的第 \(u\) 个节点内,放了 \(i\) 个设备,\(u\) 放没放设备,\(u\) 有没有被监视的方案数。 转移也非常简单对于 \(dp_{i,j}\)
阅读全文
摘要:太巧妙了!自己做的时候完全没有思路,连题解都看了好久。 前置知识 树,dp 思路 最开始完全不会的原因是想要正向的做,统计所有的方案的贡献,这个确实完全做不了,又是 \(dfs\) 序又是前缀最大值不好统计。所以我们从答案入手,我们发现求本质不同的前缀最大值序列,我们可以设 \(f_i\) 表示以
阅读全文
摘要:include <bits/stdc++.h> using namespace std; const int N=3e5+10; int n,a[N]; int ask(int t,int i,int j,int x) { cout<<"? "<<t<<" "<<i<<" "<<j<<" "<<x<
阅读全文

浙公网安备 33010602011771号