摘要: 对于每一个点 $u$,我们先找到满足右述条件的深度最小的 $u$ 祖先 $f$ 并记这个深度最小的祖先的深度为 $dp(u)$:$f$ 能只通过除了树上 $[f,u]$ 路径所包含的边之外的边到达 $u$。 那么显然,一次询问 $[a,b]$ 中,对于 $b$ 的子树中的一点 $u$,$1$ 号点能 阅读全文
posted @ 2022-10-29 18:41 ez_lcw 阅读(55) 评论(0) 推荐(8)
摘要: 初看题目,发现题目的操作比较复杂。仔细想了一想,发现题目中的操作“把图中除了这条边以外的边,每一条的权值都减少 $1$”就等价于“把这条边的权值加 $1$”。所以题目的操作就被我们化繁为简了。 然后继续想:如何才能使 $Lab$ 边一定在最小生成树中? 画个图看一下(就以样例为例): 假设现在 $L 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(38) 评论(0) 推荐(1)
摘要: 很神奇的一道题目。 首先先举一个例子,等会结合着讲:只有两个人猜,猜的串分别是 $A=\texttt{TTH}$,$B=\texttt{HTT}$。 设所有人猜的序列为 $s_1,s_2,\cdots,s_n$。 首先对于这种可能存在无限情况的题目,我们要学会归类: 把所有可能的硬币序列(可能有无限 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(227) 评论(0) 推荐(1)
摘要: 由于时间可能是小数,所以不能直接跑。 先二分答案为 $t$。 $S$ 向每个激光武器 $i$ 连一条容量为 $b_i\times t$ 的边,表示这个激光武器最多能输出多少。 然后每个机器人向 $T$ 连一条容量为 $a_i$ 的边,表示这个机器人至少需要这么多攻击才能被摧毁。 接着每个激光武器向每 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(109) 评论(0) 推荐(0)
摘要: 仔细审题: 两个操作序列不同,当且仅当操作个数不同,或者至少一个操作不同(种类不同或者操作位置不同(注意,这里的“操作位置”指的是操作顺序))。 也就是说操作序列对答案的贡献多与少和你某一次操作交换哪两段数字没有关系。 还有一个: 每种操作最多可以执行一次。 这是一个很重要的条件。 考场上手玩了一下 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(45) 评论(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 阅读(25) 评论(0) 推荐(0)
摘要: 和这道题的题面很像,但是做法不同。 题面: 有 $n$ 家商店,第 $i$ 家商店一共可以卖出 $m_i$ 件商品,其中第 $j$ 件商品购买所需的代价为 $a_{i,j}$。特别地,对于第 $i$ 家商店,如果想要购买该家商店的商品,需要出 $a_{i,0}$ 的入场费。 求出购买 $m$ 件商品 阅读全文
posted @ 2022-10-29 11:24 ez_lcw 阅读(23) 评论(0) 推荐(3)
摘要: 看到题目第一眼,最暴力的想法就是设 $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 阅读(43) 评论(0) 推荐(1)
摘要: 显然,如果白棋往左,黑棋往右,最后肯定会两两碰在一起,就像这样: 红框框起来的是会碰在一起的棋子。(我们把会碰到一起的棋子称为一对棋子) 如下图就是碰在一起的一种情况: 那么现在假设是 $A$ 遇到了这种情况,那么无论他操作的是白棋或黑棋,他肯定会输。因为另一个人可以操控棋子跟着 $A$ 的棋子走, 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(50) 评论(0) 推荐(1)
摘要: 看到异或最大,第一反应是用 01trie 做。 但是 01trie 不能实现区间加法,所以不好做。 看回题目,从最简单的思路去想: 设 $ans$ 能使得 $ans\ \operatorname{xor}\ b$ 最大。每次将 $b$ 二进制拆分,设二进制下 $b$ 的第 $i$ 位为 $b_i$( 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(29) 评论(0) 推荐(0)
摘要: 首先考虑单个数怎么做。 肯定是把每一位上的数都移到同一位(称其为决策点)上去。 假设当前数的决策点在第 $p$ 位,这一位上数字是 $x$,这一位左边的数字和为 $l$,这一位右边的数字和为 $r$。 那么决策点向左移对代价的新的贡献为 $r+x-l$,向右移对答案的新的贡献为 $l+x-r$。 由 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(33) 评论(0) 推荐(1)
摘要: 考虑用 $A^$ 维护这个东西,由于其它题解都讲得很清楚 $A^$ 的原理了,我就在这里说一下这题需要注意的地方。 按照 $A^*$ 的套路,我们要把估价函数设为当前点到 $b$ 的最短路。(这样才能保证你估计的总路径长度必定小于等于你真实总路径长) 所以我们要先反着建边,从 $b$ 开始跑一遍最短 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(74) 评论(0) 推荐(0)
摘要: 我们先考虑最纯粹的暴力,也就是暴力枚举每次空格调到哪里,并继续递归求解。 然后发现 $O(8^{15}\times5\times5)$ 的复杂度限制了我们的想象。~~同学写了一发好像10分~~ 然后既然找不到其它的太好的新算法 ~~我没说剪枝不能过~~,我们就考虑如何优化暴力。 首先,我们考虑用$I 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(67) 评论(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 阅读(58) 评论(0) 推荐(6)
摘要: 求 $\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 阅读(105) 评论(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 阅读(31) 评论(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 阅读(38) 评论(0) 推荐(1)
摘要: PE:Project Euler 题意: 汉诺塔游戏是如下的问题:有三根柱子,第一根柱子套有 $n$ 个圆盘,圆盘从上往下半径递增。每次操作可以把套在某根柱子上的最上面的那个圆盘移到另一个柱子上。但需保证过程中每根柱子都始终满足大盘在下小盘在上。现要在最小的步数内,将这 $n$ 个圆盘仍按从上往下半 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(85) 评论(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 阅读(29) 评论(0) 推荐(0)
摘要: 线段树维护区间历史信息的模板题。 看了 cmd 的博客。大概思路是:由于我们需要求出历史信息,所以暴力的做法是在做区间修改时的 tag 我们先不合并,而是按时间顺序存一个 tag 队列,然后考虑新增加一个 tag 队列时对历史信息的影响,然后再考虑我们只需要记录 tag 队列和当前的哪些信息就能维护 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(57) 评论(0) 推荐(7)
摘要: 线段树维护前缀最值相关的模板题。 关键思想在于合并,$[l,mid]$ 的前缀最值仍然是 $[l,r]$ 的前缀最值,而 $(mid,r]$ 中只有 $\geq mx_l$ 的前缀最值才是 $[l,r]$ 的前缀最值。 而前缀最值是单调的,于是可以对于 $(mid,r]$ 在线段树上二分,统计 $\ 阅读全文
posted @ 2022-10-29 11:23 ez_lcw 阅读(46) 评论(0) 推荐(5)
摘要: 设按新安排的队伍顺序第 $i$ 个人左手数字为 $a_i$,右手数字为 $b_i$。 我们考虑什么时候交换第 $i$ 个人和第 $i+1$ 个人不会更优。 设前 $i-1$ 个人获得的金币的最大值为 $pre$,他们 $a_i$ 的乘积为 $s$。 由于交换第 $i$ 个人和第 $i+1$ 个人对后 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(419) 评论(0) 推荐(2)
摘要: 首先 $m\geq n-1$ 一定有解: 若 $m\geq n$,那么 $\max d_i\geq k$,直接用 $\max d_i$ 一直做即可,接下来肯定是继续进入两种情况中的一种。 若 $m=n-1$,那么 $\min d_i+\max d_i\geq k$ 且 $\min d_i<k$,直接 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(11) 评论(0) 推荐(0)
摘要: 题意: 给定一个字符串 $S$,$q$ 次询问 $T,l,r$,求 $T$ 和 $S[l,r]$ 的本质不同公共子串数目。 $|S|\leq 5\times 10^5$,$q\leq 10^5$,$\sum |T|\leq 10^6$。 题解: 首先看一个弱化版的问题:给出两个串 $S,T$,求 $ 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(40) 评论(0) 推荐(1)
摘要: 这道题最后会化为这么一个问题:给一张图,每条边都有边权,多组询问,每次给出 $u,k$,问从 $u$ 开始走,只走边权 $\leq k$ 的边,请维护 $u$ 能走到的点的集合。 这就需要用到一种叫 kruskal 重构树的东东。 首先可以发现,若 $u$ 能走到 $v$,那么 $u$ 在最小生成树 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(27) 评论(0) 推荐(0)
摘要: 首先可以考虑求出 $f_i$ 表示结尾在第 $i$ 位的 $AA$ 串的个数,$g_i$ 表示开头在第 $i$ 位的 $AA$ 串的个数。 枚举 $A$ 的长度 $L$,每 $L$ 位放置一个关键点,那么 $AA$ 必定经过恰好两个相邻的关键点。 枚举两个相邻关键点 $i$ 和 $i+L$ 并钦定 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(36) 评论(0) 推荐(1)
摘要: 考虑树形 dp,设 $dp_i$ 为 $i$ 节点到 SZ 市的最小费用,$dis_i$ 为 SZ 市到 $i$ 节点的距离。 显然初始化 $dp_1=0$,然后 $dis_i$ 可以提前预处理出来。 然后有 $dp_u=\min(dp_v+(dis_u-dis_v)\times p_u+q_u)$ 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(27) 评论(0) 推荐(1)
摘要: 令 $n=\log m$,记 $m$ 在二进制表示下为 $\overline{s_{n-1}\cdots s_1s_0}$。 首先可以归纳得到一个位置 $x$ 为 $\texttt{b}$ 当且仅当 $\operatorname{popc}(x)\equiv 1\pmod 2$,那么我们要统计的即为 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(25) 评论(0) 推荐(2)
摘要: 操作1、3、4都是常规操作,我就不讲了。 然后我们考虑怎么处理区间除法。 首先容易想到对于一个数$x$,它除一次最少除$2$,那么它最多除$log_2(x)$次就会变成$0\ or\ 1$。 但是会有区间加法,所以这个东东不可以搞。 于是我们注意到一个性质: 如果: $$x-\lfloor\frac 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(40) 评论(0) 推荐(7)
摘要: 搞不懂排列计数。 一种计数方法是考虑从小往大往当前排列中插入每个数,存在一次插的位置不同那么最后的结果也不同。 那么考虑插入 $i$ 时,对于 $x\in[0,i-1]$ 均有且仅有一种方法使得逆序对个数增加 $x$。 法一: 考虑 DP,设 $f_{i,j}$ 表示插入了 $i$ 个数,已经有 $ 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(51) 评论(0) 推荐(3)
摘要: 我们先用优先队列的方式分别处理出只让所有衣服洗完的时间和只让所有衣服烘干的时间。 然后我们考虑怎么分配衣服。 最优情况肯定是让最慢洗完的衣服放进最快烘干的烘干机里面。 直接维护即可。 代码如下: #include<bits/stdc++.h> #define L 1000010 #define N 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(28) 评论(0) 推荐(1)
摘要: 题目相当于让我们考虑某种排列最少能经过几次操作得到。 操作是从 $1\sim n$ 的顺序排列中抽取若干个元素放到排列头和尾,那么假设进行了 $l$ 次操作,$1\sim n$ 中还会剩下至少 $n-l$ 个元素没有被抽取,也就是说这个排列的最长连续上升段长度至少是 $n-l$。 也就是说经过 $l 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(96) 评论(0) 推荐(18)
摘要: 这道题看着像是manacher,但其实是数位dp。 因为如果某个数上的某一位与它的上一位相同,则这个数肯定是个回文数;同理,如果某个数上的某一位与它的上上一位相同,则这个数肯定也是个回文数。 数位dp时要注意前导0的判断。 代码: #include<bits/stdc++.h> #define ll 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(36) 评论(0) 推荐(0)
摘要: 记 $H_i$ 表示给 $i$ 个球染色,染两次,每次染 $m$ 个,其中要求第一个球必须染。那么题目即求: $$ \sum_{i=0}^{n-1}H(n-i)F(i) $$ $n$ 很大不好求,有种比较神仙的做法。 设 $F(i)=\sum_{j=0}^mf_ji^j$,对每个 $j$ 分别求解: 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(60) 评论(0) 推荐(5)
摘要: 点数-边数第二次见了(第一次是在十二省联考-希望),听说是树上连通块计数问题的一种经典方法? 考虑对于一个树上连通块来说,能对所有点进行测试的点(以下称为 “合法点”)肯定也构成了一个连通块。 由于选出的 $K$ 个连通块有交,所以它们的并也是一个树上连通块,那么这个并中的合法点也构成了一个连通块。 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(78) 评论(0) 推荐(13)
摘要: $manacher$+二分+双哈希 ~~看见标题就不想做的童鞋可以看下面,让你更绝望。~~ 这题思路比较简单明了,我们就按照题目说的那样,设串$T$为答案,分两种情况讨论: 当$T$是$A$串或$B$串中的一个回文串时,我们可以直接用$manacher$求得答案。 当$T$是某一个回文的扭动字符串$ 阅读全文
posted @ 2022-10-29 11:05 ez_lcw 阅读(47) 评论(0) 推荐(0)