25.10.30

QOJ9937

首先发现可以直接 \(n-m\) 放到 \(n\) 把问题转化为 \(m=0\)

一个尝试是分组,但是分两组是没办法构造的,于是考虑分三组,\(\{1,2,\cdots,n/3\},{n/3+1,\cdots,n/3*2},{n/3*2+1,\cdots,n}\)

观察一下发现只要中(倒序)小(正序)大(正序)轮流放这一段就做完了。

然后发现 \(n\bmod 3\neq 0\) 的时候需要调整一下,多出来的优先放进大组然后是中组,顺序需要转一下来契合 \(m>0\) 的部分。

CF1443E

一看就知道只有最后十几个数会变,于是记录排名然后康托展开即可。

P11119

首先考虑一个暴力是 \(f(i,j)\) 表示 \(i\) 出发走 \(j\) 步能到哪,这个是可以递推出来,\(f(i,j)\gets R_{f(i,j-1)+1}\),其中 \(R_i\) 是覆盖这个点的区间中最大的右端点。

然后意识到这个地皮过程可以建树,把权值也放进来,于是就得到了一个线性的树上地皮,\(f_i=f_{R_i+1}+n-R_i\)

考虑 \(x\) 带来的修改,假设其占据了 \(nL\sim nR\) 的区间,那么满足 \(i\ge nL,R_i\le nR\)\(f_i\) 会被重算为 \(f_{nR+1}+n-nR\)

同时,经过这一区间的一些 \(j\) 会减去这部分的贡献,处理出 \(cnt_i\) 表示 \(1\sim i\) 中到 \(i\) 的点数即可计算。

容易发现变化到修改的各部分所在的区间左右端点都是单调的,于是可以扫描算出。

CF1578B

可以直接看作序列考虑,然后注意到一个连通块内肯定存在一系列边是最左到最右,直接把他们中间节点砍了是不影响判断的。

何意味?就是我们直接将连通块内的边改为相邻节点相连(包括首尾),那也不影响统计。

这就比直接考虑大量相交的情况容易了很多,然后思考合并时会把哪些连通块也一起并起来。

其实就是有一条边和新增这条边相交,那么肯定有个端点在里面。

但是你不知道端点的另一端,这很难办啊,讨论一下,假设新加边 \(x<y\)

如果这个端点另一端在外面,那么他肯定给 \(y\) 盖住了。

这启发我们考虑每个点上盖住它的边(端点不算盖住),记这个为 \(h_i\)

容易发现相邻的 \(h\) 至多差一,因为修改后的边不可能同时两个影响 \(h\) 的在一个端点发生。

考虑 \(h_x>h_y\),那么 \(x\) 往右走到某处出现了 \(h_z<h_x\),也就是这里有个端点,而且我们知道它的另一侧肯定在 \(x\) 左边。

那么就可以合并 \(x,z\),若 \(h_x<h_y\) 同理也可以给 \(y\) 找一个。

现在考虑 \(h_x=h_y\),我们还是从 \(x\) 出发往右找这个 \(z\),如果在 \(x,y\) 之间还是可以合并,否则就说明 \(x,y\) 之间没别的了,直接合并 \(x,y\)

显然这个 \(h\) 是可以线段树维护的,合并两个连通块时把公共部分或者断开部分修改一下即可,找 \(z\) 可以在线段树上二分。

P12761

下面将的区间皆为闭区间,只考虑点不考虑点间的线段。

首先我们可以做一些贪心,把包含了小区间的大区间删掉,它们是无需考虑的。

由于要计数,我们难以摆脱考虑 \(m\) 这一维。

观察过 \(i\) 这个点的区间,注意到它们按照 \(r\) 排序后是连续的。

如果选了 \(i\) 这个点,那么这段区间都无需考虑。

也就是说我们只需考虑按照 \(r\) 拍序后的线段,每次选一段交非空的区间,然后在它们的交中选一个点。

这样就得到了暴力地皮,但是发现方案重了。

因此需要钦定一下,如果这段区间是 \(j\sim i\),那么不能选到 \(j-1\sim i\) 的交里面,这样就对了。

稍微画一下式子发现可以转移的 \(j\) 能二分或双指针定出来,而转移时 \(j\) 上的系数之和 \(j\) 有关,于是可以前缀和优化。

P12742

[](mobai 容斥大手子 lrl。)

显然直接计数是抛不掉枚举起点终点的,于是考虑容斥。

\(f(d,i,j)\) 表示 \(i\to j\)\(d\) 步的方案,这个直接转移即可。

考虑 \(g(d,i,j)\) 表示 \(i\to j\)\(d\) 步且中途不经过 \(i,j\) 的方案。

那么 \(g(d,i,j)\) 要在 \(f(d,i,j)\) 的基础上减去什么呢?首先是 \(g(t,i,j)\times f(d-t,j,j)\),也就是假定一次误入 \(j\) 是在第 \(t\) 步。

但是还可能有误入 \(i\) 的方案,于是再设 \(h(d,i,j)\) 表示 \(i\to i\)\(d\) 步且中途不经过 \(i,j\) 的方案。

那么 \(g(d,i,j)\) 就要再减去 \(h(t,i,j)\times f(d-t,i,j)\)

接下来考虑 \(h(t,i,j)\) 是同理的,不再赘述。

posted @ 2025-10-31 09:27  LQ636721  阅读(3)  评论(0)    收藏  举报