solution-4(leize&CEO)
T1
JOIGST 2025] 日本浮现 / Japan Emerges
签到题
这题有两种不太一样的做法
一种是直接做,发现会有相邻的只有相邻列和当前列
然后分讨一下,用双指针建边
由于是线性的,所以边不会很多
然后跑最小生成树即可
复杂度 \(O(n \log n + 6 n)\)
第二种是先二分答案
然后判断类似了,不过要麻烦一些
复杂度 \(O(6 n \log n)\)
T2
有摩尔投票 + 猫树分治 + 吉司机线段树做法,但是我不会。
题目就相当于求每个点的绝对众数。我们考虑二进制拆分,把每个 \(c\) 拆成二进制。
有一个结论:对于一个位置,若这个位置的所有 \(c\) 在二进制下第 \(i\) 位的个数占比过半,那么若该位置存在绝对众数 \(x\),则 \(x\) 在二进制下第 \(i\) 位一定是 \(1\)。显然由绝对众数的性质可得。
于是我们对每个位置都这样扫一遍,即可得到该位置唯一可能的绝对众数,然后我们再对该数 \(check\) 一遍就可以了,用二维差分 \(+\) 二维树状数组即可。
复杂度 \(O(n^2 \log n+q \log^2 n)\)。
《一个人挺好》
《陪我过个冬》
T3
光看思路不看代码的话,这是一道好题。
对于一次询问 \((x_1,y_1)\) 到 \((x_2,y_2)\),显然若两点不在同一个联通块中则无解。考虑在同一个联通块中的答案。
我们对整个网格进行黑白染色。则有结论:若黑色/白色格点存在不同的数,则一定有解。
证明:
设此时黑色格点存在两个格点的数互不相同,设这两个格点为 \((a,b)\)、\((c,d)\),我们再寻找一个点 \((x,y)\),满足 \((a,b)\) 可达 \((x,y)\),\((x,y)\) 可达 \((c,d)\)。
则我们有这样一条路线:\((x_1,y_1) \to \dots \to (a,b) \to (x,y) \to (c,d) \to (x,y) \to (a,b) \to \dots \to (x,y) \to (p,q) \to \dots \to (x_2,y_2)\)。考虑这样的路线怎样构造合法解。
对于前半段 \((x_1,y_1) \to \dots \to (a,b)\) 和后半段 \((p,q) \to \dots \to (x_2,y_2)\),这段的权值是常数,我们不用管。考虑中间一段如何构造。设 \((a,b)\) 的点权为 \(a\),\((c,d)\) 的点权为 \(c\),\((x,y)\) 的点权为 \(b\),则中间的权值可以写成 \(\overline{b?b?b?...?b}\),其中 \(?\) 既可以是 \(a\) 也可以是 \(c\)。
我们先将 \(?\) 全部填成 \(c\),再考虑将 \(c\) 修改成 \(a\) 造成的影响。
令路径长为 \(2 \times (P-1) \times (P-1)+1\),则每个 \(?\) 的贡献是 \(a\) 或 \(c\) 的权值 \(\times 100^k\),\(k \in [1,(P-1) \times (P-1)]\)。根据费马小定理我们可以得到 \(100^{P-1} \equiv 1(mod\) \(P)\),而 \(k\) 的取值中满足 \((P-1)|k\) 的 \(k\) 共有 \(P-1\) 种,也就是我们可以依靠这些位将路径的权值加上不超过 \(P-1\) 个 \(a-c\)。
由于 \(\gcd(a-c,P)=1\),所以我们将路径权值加上 \(s\) 个 \(a-c\),\(s \in [0,P-1]\) 可以取遍 \(P\) 的剩余系中所有数,于是路径的权值可以是任何数。证毕。
因此对于每次查询,我们只需要判断 \((x_1,y_1)\) 和 \((x_2,y_2)\) 是否在同一个联通块,以及联通块中相同颜色是否存在不同的数即可。
对于不满足条件(同色格的数字都相同)的情况,我们可以预处理出每两种数字对于所有权值是否可达,查询时直接查表即可。这部分的复杂度为 \(O(100P)\),\(P=1145141\) 。
对于动态维护联通块信息,我们使用线段树分治 \(+\) 可撤销并查集即可。
具体来说,我们对操作进行线段树分治。对于修改操作,我们将修改的格子操作前到上一次修改这段区间挂到时间轴上,那么在分治时,我们就将问题转化为了:
两点连通性。
联通块黑白染色后是否满足结论。
不满足结论时黑白联通块分别的颜色。
在合并两个联通块时,我们分类讨论:
若其中一个联通块满足结论,则整个联通块满足结论。
否则若两联通块的黑(白)块颜色不同,则合并后的联通块满足结论。
最终复杂度 \(O(P+(nm+q)\log q\log nm)\)。
然后有几个注意事项:
- 如果四面都封锁,此时只有格子上的数等于 \(v\) 时有解。
- 不满足结论时,计算答案要注意奇偶性。
- 记得把最后一次修改到操作结束这一段的状态也加进线段树里。
T4
这题困难一些
初看没思路 再看还是没有
然后这题做法还是有两种
题解区都有介绍
一种是重工业的笛卡尔树上线段树合并优化 dp
另一种是小清新的反悔贪心
笔者只会第二种
发现题目是平面直角坐标系
我们将点按照纵坐标排序,依次考虑每个点 \(i\) ,设影响到他的价值和为 \(x\)
显然我们当前应该贪心选择较小的
\(d_a < d_b < d_c\) 时,若 \(a , b\) 冲突 , \(a , c\) 冲突 , 则 \(b , c\) 一定冲突
\(c_i \le x\) 时 ,由于这个点对后面影响的范围大,且价值小,直接删掉
\(c_i > x\) 时 ,我们贪心删掉其他点,但当这个点被删掉的时候,这些点应该被还原,所以我们对其影响的区间扔进去 \(c_i - x\) ,相当于是反悔的部分,得到其影响的区间是容易的,用并查集简单维护即可
然后维护 \(x\) 的话,用树状数组维护即可

浙公网安备 33010602011771号