摘要: 对于每一个点 $u$,我们先找到满足右述条件的深度最小的 $u$ 祖先 $f$ 并记这个深度最小的祖先的深度为 $dp(u)$:$f$ 能只通过除了树上 $[f,u]$ 路径所包含的边之外的边到达 $u$。 那么显然,一次询问 $[a,b]$ 中,对于 $b$ 的子树中的一点 $u$,$1$ 号点能 阅读全文
posted @ 2022-10-29 18:41 ez_lcw 阅读(33) 评论(0) 推荐(6) 编辑
摘要: 初看题目,发现题目的操作比较复杂。仔细想了一想,发现题目中的操作“把图中除了这条边以外的边,每一条的权值都减少 $1$”就等价于“把这条边的权值加 $1$”。所以题目的操作就被我们化繁为简了。 然后继续想:如何才能使 $Lab$ 边一定在最小生成树中? 画个图看一下(就以样例为例): 假设现在 $L 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(24) 评论(0) 推荐(1) 编辑
摘要: 很神奇的一道题目。 首先先举一个例子,等会结合着讲:只有两个人猜,猜的串分别是 $A=\texttt{TTH}$,$B=\texttt{HTT}$。 设所有人猜的序列为 $s_1,s_2,\cdots,s_n$。 首先对于这种可能存在无限情况的题目,我们要学会归类: 把所有可能的硬币序列(可能有无限 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 由于时间可能是小数,所以不能直接跑。 先二分答案为 $t$。 $S$ 向每个激光武器 $i$ 连一条容量为 $b_i\times t$ 的边,表示这个激光武器最多能输出多少。 然后每个机器人向 $T$ 连一条容量为 $a_i$ 的边,表示这个机器人至少需要这么多攻击才能被摧毁。 接着每个激光武器向每 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 仔细审题: 两个操作序列不同,当且仅当操作个数不同,或者至少一个操作不同(种类不同或者操作位置不同(注意,这里的“操作位置”指的是操作顺序))。 也就是说操作序列对答案的贡献多与少和你某一次操作交换哪两段数字没有关系。 还有一个: 每种操作最多可以执行一次。 这是一个很重要的条件。 考场上手玩了一下 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(29) 评论(0) 推荐(1) 编辑
摘要: 显然对于第 $i$ 关的答案为: $$ ans_i=\max_{j\in [1,i]}\left(\dfrac{s_i-s_{j-1}}{x_i+(i-j)d}\right) $$ (其中 $s_i=\sum\limits_{j=1}^ia_j$) 然后把这个看成是 $(x_i+i\cdot d,s 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 和这道题的题面很像,但是做法不同。 题面: 有 $n$ 家商店,第 $i$ 家商店一共可以卖出 $m_i$ 件商品,其中第 $j$ 件商品购买所需的代价为 $a_{i,j}$。特别地,对于第 $i$ 家商店,如果想要购买该家商店的商品,需要出 $a_{i,0}$ 的入场费。 求出购买 $m$ 件商品 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(9) 评论(0) 推荐(2) 编辑
摘要: 看到题目第一眼,最暴力的想法就是设 $dp(i,j)$ 表示以 $a$ 为起点、$i$ 为终点,路径长度为 $j$ 的路径数。 容易得到状态转移方程:$dp(u,j)=\sum_{(v,u)}dp(v,j-1)$。 但是我们发现一个问题:题目中要求“人物不能立刻沿着刚刚走来的路走回”,但显然这种 d 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(25) 评论(0) 推荐(1) 编辑
摘要: 显然,如果白棋往左,黑棋往右,最后肯定会两两碰在一起,就像这样: 红框框起来的是会碰在一起的棋子。(我们把会碰到一起的棋子称为一对棋子) 如下图就是碰在一起的一种情况: 那么现在假设是 $A$ 遇到了这种情况,那么无论他操作的是白棋或黑棋,他肯定会输。因为另一个人可以操控棋子跟着 $A$ 的棋子走, 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(30) 评论(0) 推荐(1) 编辑
摘要: 看到异或最大,第一反应是用 01trie 做。 但是 01trie 不能实现区间加法,所以不好做。 看回题目,从最简单的思路去想: 设 $ans$ 能使得 $ans\ \operatorname{xor}\ b$ 最大。每次将 $b$ 二进制拆分,设二进制下 $b$ 的第 $i$ 位为 $b_i$( 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 首先考虑单个数怎么做。 肯定是把每一位上的数都移到同一位(称其为决策点)上去。 假设当前数的决策点在第 $p$ 位,这一位上数字是 $x$,这一位左边的数字和为 $l$,这一位右边的数字和为 $r$。 那么决策点向左移对代价的新的贡献为 $r+x-l$,向右移对答案的新的贡献为 $l+x-r$。 由 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 考虑用 $A^$ 维护这个东西,由于其它题解都讲得很清楚 $A^$ 的原理了,我就在这里说一下这题需要注意的地方。 按照 $A^*$ 的套路,我们要把估价函数设为当前点到 $b$ 的最短路。(这样才能保证你估计的总路径长度必定小于等于你真实总路径长) 所以我们要先反着建边,从 $b$ 开始跑一遍最短 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 我们先考虑最纯粹的暴力,也就是暴力枚举每次空格调到哪里,并继续递归求解。 然后发现 $O(8^{15}\times5\times5)$ 的复杂度限制了我们的想象。~~同学写了一发好像10分~~ 然后既然找不到其它的太好的新算法 ~~我没说剪枝不能过~~,我们就考虑如何优化暴力。 首先,我们考虑用$I 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 首先看单次询问我们怎么做。对于一个人,他的最优策略显然是不断吃最小的,并看最后能不能吃完。 假设我们把区间内的数排好序了,设为 $a_1\leq a_2\leq \cdots\leq a_n$。对于一个 $u$,它能吃完所有的人当且仅当: $$ \begin{aligned} \forall i<u 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(30) 评论(0) 推荐(2) 编辑
摘要: 求 $\begin{Bmatrix}n\m\end{Bmatrix}\bmod 2$ 的值。 由第二类斯特林数的递推公式: $$ \begin{Bmatrix}n\m\end{Bmatrix}=\begin{Bmatrix}n-1\m-1\end{Bmatrix}+m\begin{Bmatrix}n 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(64) 评论(0) 推荐(2) 编辑
摘要: 不妨设青蛙A的出发点坐标是$m1$,青蛙B的出发点坐标是$n1$。青蛙A一次能跳$m$米,青蛙B一次能跳$n$米,跳一圈长$l$米,设青蛙A、B跳了$x$次。 那么题目要求的是满足下面这个柿子最小$x$正整数解: $$(m-n)\times x\equiv m1-n1\pmod{l}$$ 不妨把这个 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 首先进行变形: $$ \begin{aligned} a_j&\leq a_i+p-\sqrt{|i-j|}\ p&\geq \max_{j=1}^n\left(a_j+\sqrt{|i-j|}\right)-a_i \end{aligned} $$ 把 $|i-j|$ 拆为 $\max(i-j,j 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(21) 评论(0) 推荐(1) 编辑
摘要: PE:Project Euler 题意: 汉诺塔游戏是如下的问题:有三根柱子,第一根柱子套有 $n$ 个圆盘,圆盘从上往下半径递增。每次操作可以把套在某根柱子上的最上面的那个圆盘移到另一个柱子上。但需保证过程中每根柱子都始终满足大盘在下小盘在上。现要在最小的步数内,将这 $n$ 个圆盘仍按从上往下半 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 题面: 有 $n$ 个点,有一个长度为 $m$ 的边序列 $A$,$q$ 次询问由这 $n$ 个点和 $A_l,\cdots,A_r$ 的边构成的图中的连通块数量。强制在线。 $n,q\leq 10^5$,$m\leq 2\times 10^5$。 题解: 在线也能把它搞成离线:枚举右端点 $r$ 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 线段树维护区间历史信息的模板题。 看了 cmd 的博客。大概思路是:由于我们需要求出历史信息,所以暴力的做法是在做区间修改时的 tag 我们先不合并,而是按时间顺序存一个 tag 队列,然后考虑新增加一个 tag 队列时对历史信息的影响,然后再考虑我们只需要记录 tag 队列和当前的哪些信息就能维护 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(34) 评论(0) 推荐(4) 编辑