Div.2 E Rollup

2133E

不会做神秘构造

首先考虑到每个点必须进行一次询问,而链可以使每个点恰好进行一次询问。

然后只需要考虑用 \(\frac{1}{4}n\) 次操作拆链。若该点下有多条链或有两条链的合并点,则需要拆开。

这样父亲儿子一组点就至少有 \(4\) 个。

2140E

不会预处理

\(m=2\),设 \(dp_{i,j,S}\) 表示 \(i\) 个石子状态是 \(S\),当前由 \(j\) 操作的结果。

转移枚举移出的位置即可。

钦定一个 \(h\),定义 \(0\)\(a_i<h\)\(1\)\(a_i\ge h\),考虑枚举 \(h\) 统计答案。

\(cnt_i\)\(S\)\(i\)\(1\) 的 dp 数组的和,对答案的贡献为 \(\sum\limits_{j=1}^{m} (j-1)^{n-i}(m-j+1)^icnt_i\)

2128E

每次端点移动一位,两个区间的中位数会有恰为 1 的交集,故合法的 \(v\) 是一段连续的区间。

对于 \(V\)\(\exist v\leq V\)\(v\) 合法当且仅当 \(V\) 满足 \(b_i=\begin{cases}1&x\leq V\\-1&x>V\end{cases}\) 有和非负的子段。

上界同理,可以二分求出 \(v\) 的范围。

从最小的区间挪动到最大的区间一定覆盖所有的 \(v\),对顶堆维护中位数即可。

1605E

不会莫反

先将问题转换为从全 \(0\) 序列到 \(c_i=b_i-a_i\) 的操作数,发现从左到右操作一定不劣。

\(f_i\) 表示在 \(i\) 位置的操作数,则 \(f_i=c_i-\sum\limits_{d|i,d\ne i}f_d\),即 \(c_i=\sum\limits_{d|i}f_d\)

莫反 \(f_i=\sum\limits_{d|i}\mu(\frac id)c_d\),答案为绝对值求和。

考虑怎么维护答案,把 \(\mu(i)c_1\) 抠出来,按 \(\mu(i)\) 分类预处理,就可以简单维护绝对值。

1614E

注意到若初始温度 \(x<y\),进行一系列操作后仍有 \(x\le y\)

考虑用线段树维护初始温度对应的答案,每次插入新一天的修改是连续的前后缀。

1617E

考虑两个数能在一次修改后相等,满足 \(a_x+a_y=2^k\),且关系是双向的。

有注意到一个正数通过一次修改只能到达一个比它小的数,即关系是一棵树。

深度最大是 \(log\),直接大力找直径即可。

1623E

考虑一个点复制后更优,需要当前字母小于中序遍历中下一个与其不同的字母。

让左子树中能复制的先复制一定更优,按此 dfs 模拟即可。

1625E

首先注意到原串中失配的括号在子序列中也一定没有贡献。

考虑把括号串写成树的形式,向上转移方案数 \(f_u=\sum f_v+\frac{(son_u+1)son_u}2\)\(son_u\) 为儿子数量。

由于询问的一定是一段连续的兄弟,所以可以把树拍平维护。

一个树状数组维护原序列上前缀的总方案,每个节点下再分别开一个树状数组维护儿子个数。

1632E

一个暴力是考虑对于每个询问枚举 \(b\) 然后算答案。

这个做法没啥优化空间,考虑二分答案 \(mid\)\(b\) 点需要最小化 \(\max_{dep_u>mid} \{dis_{b,u}\}\),自然考虑到是不合法点导出子树的直径中点。

设直径为 \(D\),那 check 的限制就是 \(\lfloor\frac{D+1}2\rfloor+x\le mid\)\(x\) 增大时对应 \(mid\) 增大,可以不用二分直接枚举。

然后就是维护直径,容易感性理解原树种深度最深的点一定可以作为不合法子树的直径一端,那就可以从大到小枚举答案 \(mid\) 直接维护了,\(mid\) 会对 \(x\le mid-\lfloor\frac{D+1}2\rfloor\) 的询问产生影响。

1634E

一个基础的想法是类似二分图,序列和对应的数跑匹配。

但图的性质很好,并且我们也只需要判断可行。就把所有序列到数的边全建出来,每个点度数都必须是偶数,想到欧拉回路,那就把回路上边分成两类即可构造

2180E

为什么大家都秒杀。

首先考虑到 \(l\)\(r\) 相同的前缀不能异或,那就可以处理成 \(1\le l<2^{k-1}\le r<2^k\)

由于合法的 \(x\) 集合是封闭的,可以从基的角度考虑

\(x\) 的最高位是 \(t-1\),则将全部数按 \(2^t\) 分段,整块一定满足条件,考虑基元素都形如 \(2^t-1\)

则端点在块的端点上时的 \(t\) 满足条件,条件等价与 \(l/r\) 的末 \(t\) 位是否全为 \(0/1\)

然后只需要考虑 \(t\) 增大后端点在块中间的情况。

因为块内异或后会从一侧打到另一侧,故单个散块一定不满足,也因此两个散块必须对称。要能打到对方也就必须取到同一块内,故此时基中会多一个元素。

posted @ 2025-09-12 23:34  Jur_Cai  阅读(6)  评论(0)    收藏  举报