Training-“我将终究顺流入大海”

CF700E Cool Slogans

黑。

首先可以发现一定存在一种序列使得前一个串是后一个的后缀,那么后缀问题考虑建立后缀自动机,在 parent 树上 dp。

然后考虑怎么判断出现 2 次,考虑线段树合并维护 endpos 集合,记当前串长度为 \(l_1\),一个 endpos 位置为 \(x\),查询串长度 \(l_2\),那么查询串如果有 endpos 在 \([x-l1+l2,x-1]\) 内,就有两次。

接下来就是 dp 的问题,可以发现在一条链上是一个不降序列,所以维护一下每一段的开始然后判断是否出现 2 次即可。

CF1477D Nezzar and Hidden Permutations

黑。

这构造有点神啊。

将二元组视作边,那么就是一个定向问题,要求最后是一个 DAG,并且最后的答案就是找两个拓扑序,使得相同的位置尽量少。

可以发现,如果一个点的度数是 n-1,那么向前/向后的边数就可以唯一确定它在拓扑序中的位置。

其余的考虑补图,如果其中一个子图是菊花且点数不为 1,那么可以将 \(p\) 中根标为 \(n\),其余为 \(1,2,\dots,n-1\),\(q\) 中标为 \(1\),其余是 \(2,3,\dots,n\)。

那么只有这些边不会满足,剩余的一定可以,如果若干个菊花,那么每个菊花的标号段互不交叉就可以了。

然后考虑怎么构造,对于一个没有划分的点,如果相连的点有未被划分的,划成一组。

其余情况下考虑选一个相邻点,可以发现它一定不是根,如果所在块大小超过 2,拆出来就可以了,否则直接连上去就是对的。

CF868F Yet Another Minimization Problem

紫。

记区间 \([l,r]\) 的贡献为 \(w(l,r)\)。

首先对于端点 \(l_1\le l_2\le r_1 \le r_2\),有 \(w(l_1,r_1)+w(l_2,r_2)\le w(l_1,r_2)+w(l_2,r_1)\),因为前者少个 \([l_1,l_2-1]\) 到 \([r_1+1,r_2]\) 的贡献。

所以这个状物满足决策单调性,考虑分治,可以发现难点在于怎么快速求区间的贡献。

可以发现每次区间的移动是有限制的,基本上就是一个区间的端点移动整个区间一半的长度,所以可以考虑用一个类似于莫队的东西做一下,每层的移动差不多 \(O(n)\) 级别。

Dispatch Money

\(\varnothing\)。

和上一个题差不多,因为要类似于在线的去转移,考虑分治,就类似分治 FFT 一样,递归完左边之后往右边贡献就可以了。

P6246 [IOI 2000] 邮局 加强版 加强版

黑。

上个题被骗了,学习 Ri 大手子的单 \(\log\) 分治做法可以降低复杂度。

可以发现每次增加一个邮局,那么距离一定会减少,如果减少的比上一次更多,那么一定可以通过交换这两次放置的顺序满足减少量的单调性。

所以考虑 wqs 二分,每划分一段就增加二分出来的值的贡献,就是上一道题了。

考虑贡献是什么,根据小学数学 \(\sum |x-a_i|\) 这个东西的最优取值就是放在中间,这东西显然是满足四边形不等式的。

qoj7504 HearthStone

\(\varnothing\)。

题意大概是每次可以把一个位置的值改变 1,求最少要多少次操作可以让从小到大排序后,第一个值为 1,后面的相差不超过 1。

先对 \(a_i\) 排序,设 \(f_{i,j}\) 为现在在第 \(i\) 个数,把这个数变成 \(j\) 的最小代价,那么 \(f_{i,j}=\min(f_{i-1,j-1},f_{i-1,j})+|a_i-j|\)

可以发现这东西是个凸函数,考虑 slope trick 维护拐点,前面的相当于把斜率 >0 的部分平移,就是整体 +1。

后面的相当于把位置在 \(a_i\) 前的斜率 -1,后面的 +1,就是插入两个 \(a_i\),记一下斜率为 0 部分的值就可以了。

qoj8528 Chords

\(\varnothing\)。

考虑最后选出来的状物就是一些不交的区间,那么考虑区间 dp,设 \(f_{i,j}\) 表示区间 \((i,j)\) 的贡献,这个是容易做的。

因为数据随机,所以答案很小,考虑交换定义域和值域,设 \(f_{i,j}\) 表示 \(i\) 为右端点,\(j\) 为答案时最大的左端点。

转移上一种是直接从 \(i-1\) 继承,一种是找到这个区间对应的左端点,然后找到从左端点到当前点的中间最多放多少段,最后和前面的拼在一起取 \(\max\) 就可以了。

CF1634E Fair Share

紫。

构造,构造,构造!

因为限制比较宽松,直接猜测如果没有数有偶数个就一定可以。

考虑怎么构造可行解,可以把每一行两两连边,然后相同数按照某个顺序两两连边,然后就是一些环,黑白染色即可。

CF843D Dynamic Shortest Path

黑。

10 秒是可以 \(O(nq)\) 的,考虑先把原图的最短路跑出来,然后看修改操作的影响。

考虑改变每条边的边权为 \(dis_u-dis_v+add+w\),其中 \(add\) 为这一轮的变化量,\(w\) 为原本的边权,这样就是一个每条边权值都是正数的图求最短路。

因为每次边权只变化 1,所以每个点的答案在每轮至多变化 \(c\),考虑到普通的 dij 的复杂度瓶颈在于堆,所以可以直接开 \(c\) 个队列。

P9257 [PA 2022] Mędrcy

黑。

从特殊的情况开始考虑,如果一个人他一条咒语都不知道,那么在第一场聚会上一定会消失。

如果一个人知道一条咒语,而他所知道的不知道咒语的人在第一天没有离开,那么他第二天就会离开。

如果他知道 2 条咒语,并且其中没有重复的人不知道咒语,如果他们第二天没走,那么他第三天会离开。

以此类推,记 \(S_x\) 为 \(x\) 会的集合,那么如果有人走的第一天为 \(i\),这些人的编号为 \(x_1,x_2,\dots,x_i\),有 \(S_{x_1}\cap S_{x_2}\cap \dots \cap S_{x_i}=\varnothing\)

也就是补集的并集是全集,所以将人视为点,不知道的两个人视为边,就是最小点覆盖。

但是这玩意是 NP 问题,因为 \(k\) 很小,考虑直接搜,每次取度数最大的点,如果 \(>2\),那么跑一下两种情况。

否则必然是一些环和一些链,这就比较好做了。

CF2224E Zhily and Signpost

\(\varnothing\)。

场上不会,快完蛋了。

把询问离线下来,考虑到每个点的到达要求就是若干个同余方程。

考虑 EXCRT 的过程,模数始终是所有数的最小公倍数,所以如果目前求出来的公倍数是当前点的子结点个数的倍数,那么到达的儿子是确定的。

考虑从根出发,每次遇到这种情况就进行一次划分,因为每次最小公倍数的更新最少 \(*2\),所以每个数最多被划分 \(\log\) 次。

P10104 [GDKOI2023 提高组] 异或图

黑。

这题真挺厉害的,首先考虑没有边的情况,那么就是一个数位 dp。

假设当前在第 \(x\) 位,前面的异或和为 \(c\) 的前缀,这一位上只要有一个 \(1\) 取 \(0\),那么后面的就可以任取,因为这一位都可以根据结果相应调整。

可以发现这个东西有两个限制,一个是是否有 \(1\) 选了 \(0\),一个是这一位的异或和,直接 dp 就行了。

然后考虑边的限制,如果把相同视作边,那么原图就会形成若干个联通快,边的限制就相当于某些点不能在一个块,所以可以 \(O(3^n)\) 求出某些点在同一块的容斥系数,枚举子集即可。

记一个大小为奇数的联通块最小的点为关键点,普通的状压方法肯定不行,因为要记录是否分配,是否为关键点。

考虑按照权值从小到大排序,那么关键点就一定是最靠前的点,此时如果枚举到一个点,那么它前面的一定已经全部在某个联通块内,那么这部分位置就可以用来记录关键点的情况,而后面的因为权值更大,一定不是关键点。

这样大概是个 \(O(2^n n \log V+n3^n)\) 的复杂度。

P14364 [CSP-S 2025] 员工招聘

紫。

先说一下贡献延迟计算的策略,适用的情况是类似于 \(mex\) 这一类有后效性的贡献,它需要满足一定的条件才会产生,并且这个贡献只增不减。

那么我们就可以先在放的时候把数加进去,然后在贡献产生的时候计数。

这里设 \(f_{i,j}\) 表示第 \(i\) 天 \(j\) 个人失败,那么还是不能知道有哪些人没有参加面试,可以发现这个题的限制条件就类似于 \(j< c_x\)。

那么我们就可以在 \(j=c_x\) 的时候将 \(c_x\) 放入统计答案,其他情况下这是不影响答案的,所以新的状态要多加一维 \(k\) 表示有 \(k\) 个满足 \(j< c_x\) 参与面试。

转移上如果当前位置是 1,那么 \(c_x>j\) 的情况转移就是 \(f_{i,j,k+1}=f_{i,j,k}\)

如果当前位置是 0,那么 \(c_x>j\) 时参与面试的满足条件的人数 \(+1\),而同时失败人数也要 \(+1\)。

此时需要额外枚举一个数 \(l\),表示 \(c_x=j+1\)的个数,这些数要放入,转移就是 \(f_{i,j+1,k-l+1}=C_{cnt_{j+1}}^{l}*C_{k+1}{l}*l!*f_{i,j,k}\)

然后是 \(c_x<=j\) 那么一定不会成功,这里还要在乘上这个数的个数,转移和上面差不多。

考虑复杂度,可以发现每次 \(l\) 的范围就是这种数的个数,所以最后是均摊 \(O(n^3)\)。

P16433 [APIO 2026 中国赛区] 上升

黑。

也是贡献延迟计算的 trick。

考虑全是 0 的情况,有一种方法就是记录上一个数的相对位置,然后再插入新的数。

考虑这个题,因为有一些数已经确定了,所以普通的插入肯定是不行的,考虑设一个新的状态 \(j\) 用于记录小于下一个有值的数的还未出现的数的个数。

\(f_{i,j,k}\) 的 \(k\) 的意思也要相应的发生变化,当 \(k\le j\) 时就是比它小的数有几个没有出现,否则就是空位数+在还没有确定位置的数中的相对位置。

考虑转移,如果 \(p_i\neq 0\) 那么这时候要将 \(p_i\) 到 \(p_nxt\) 之间的数确定位置。

因为 \(i\) 的位置是固定的,所以只有 \(f_{i,j,j}\) 这些位置有用,枚举一下前面 \(>p_i\) 的个数就行了。

考虑向下一位的转移,如果不是 0,那么 \(f_{i+1,j,j}=\sum f_{i,j,k}*(1+(w_i-1)*[j\ge k])\)

否则要枚举这一位和上一位的情况,转移和全为 0 类似,注意如果 \(k\le j\) 那么 \(j\) 要 -1。

这里的复杂度是 \(O(n^4)\) 的,差分优化可以到 \(n^3\),可以在开头和结尾各加一个数减少细节。

P16434 [APIO 2026 中国赛区] 蛋糕

紫。

先考虑 \(k=1\) 的部分,可以插入 \(1,2,3\),然后问 \(a_1+a_4\) 和 \(a_2+a_3\)。

先看 \(k=7\) 的部分,第一个包是一样的,这个基本上就是一个 \(\log_3\) 的复杂度,而我们的信息恰好是 \(3\) 种,那么就是要给出一种构造使得每个信息恰好对应一段区间。

考虑延续 \(n=3\) 的做法,把每个数都插一遍,差分一下就可以发现是若干个 1 中间有一个 0,而我们就是要找到这个 0。

所以可以从左右端点一起走若干步,那么如果和不变,就证明在中间,偏小就在左边,否则在右边,这就可以三分了。

如果最后剩下 3 个数,需要把前两个比一下,这里要注意一下调参,如果 \(r-l\equiv 2(\bmod 3)\),两边的移动距离要上取整,不然会多一次。

然后就是 \(w=10^9\),先去加入小于阈值的所有 2 的幂次,那么可以发现如果一个数的位置在未知数的后面,那么他的值一定小于等于前缀和。

所以可以倒着找到第一个小于的位置,后面的就是所求的值,然后从大到小依次加入前面的值,超过就删除。

CF1458F Range Diameter Sum

黑。

树上圆理论的板子,考虑记 \((u,r)\) 表示以 \(u\) 为圆心,\(r\) 为半径的圆。

考虑两个圆的合并,如果一个包含另一个,即 \(dis(u_1,u_2)+r_1\le r_2\),那么直接取较大的就可以了。

否则,新的直径就是 \(u_1,u_2\) 之间的距离加上两者的半径,对应的圆心要移到中间,即 \((go(u_1,u_2,(dis(u_1,u_2)-r_1+r_2)/2),(dis(u_1,u_2)+r_1+r_2)/2)\)。

然后就是这道题,每一段区间最远的两个点为直径的两端点恰好可以用于合并,考虑分治。

对于每个 \(mid\),可以合并出每个点到 \(mid\) 这一段的圆,再考虑贡献,依次枚举肯定是不行的。考虑到因为圆的大小是单调的,所以一定可以分成三段,而且因为左边也单调,容易双指针。

麻烦的是中间的一段,要求出所有圆心到当前点的距离,\(\log^2\) 树剖+线段树容易做,也可以大力上点分树 \(O(log)\),上面的指针移动就相当于加点删点。

为了让圆心都落在点上,可以在每条边中间额外放一个点。

P16435 [APIO 2026 中国赛区] 集宝

黑。

继续树上圆理论,但是这次是求交,如果相邻的两个范围有交,那么可以一直停在这个范围。

考虑怎么求交,对于两个圆 \((u_1,r_1),(u_2,r_2)\),包含的话取小的,否则 \((go(u_1,u_2,r_1-(r_1+r_2-dis(u_1,u_2))/2),(r_1+r_2-dis(u_1,u_2))/2)\)。

然后可以发现对于两个不交的圆,可以发现在从第一个到第二个的过程中,有一个在第一个圆上的点是一定会经过的,就是圆和两圆心路径的交点。

所以可以对每个位置求出最远的点使得这段区间内交集不为空,然后维护一下相邻圆必须经过的点,就可以倍增预处理了,统计答案加上 \(x\) 到第一个必经点的距离即可。

P9732 [CEOI 2023] Trade

黑。

第一问是好做的,这个显然满足四边形不等式。

关键是第二问,可以发现如果两个区间相互包含,那么一定可以用若干个区间代替掉较大的那个。

考虑对每个 \(i\) 找到最小的右端点使得 \(w(i,p_i)=ans\),然后对于两个点 \(i<j\),可以发现 \(p_i\) 到 \(p_j\) 之间作为右端点还会产生一些贡献,而有效区间肯定是以 \(j\) 为左端点。

剩下的条件就是形如在区间 \(l,r\) 内,值 \(\ge v\) 的限制,可以维护,还有求第 \(k\) 大可以主席树。

Assign or Multiply

\(\varnothing\)

考虑原根,这样就可以乘法转成加法,然后最简单的方法就是 bitset,但是显然不能过。

考虑一次操作其实就是找到两个距离为 \(x\) 的点使得前者为 \(1\) 后者为 \(0\),考虑哈希就可以直接找到不同的位置,然后直接覆盖。

因为每次找到的不同的位置只有 \(1,0\) 和 \(0,1\) 两种情况,把可以互相转移的看作一条边,那就是若干个环,那么选出来的位置就是交界处,所以最多也只有 \(O(n)\) 次多余的查找。

用个树状数组+哈希二分,这里 ull 自然溢出就可以了。

P14637 [NOIP2025] 树的价值

黑。

最简单的方法就是背包记录 \(f_{i,j,k}\) 表示点 \(i\),\(mex\) 为 \(j\),有 \(k\) 个点未使用。

然后考虑将 \(mex\) 的继承关系记为重边,其余为轻边,那么每个点的贡献就是到根链上最长的重链长度。

就有 \(f_{i,j,k}\) 表示点 \(i\),到根路径最长为 \(j\),这条链在该点上方还有 \(k\) 的长度。

考虑优化,设 \(f_{i,j}\) 表示 \(i\) 到父亲的边是轻边,最长重链为 \(j\),\(g_{i,j}\) 表示到父亲为重边。

然后有 \(g_{u,j}=\max(g_{v,j+1}+\sum f_{v',j})\)。

\(f\) 相对麻烦一点,一种是贡献全是 \(j\),另一种就是当长度超过 \(j\) 的时候产生的额外贡献。

相当于一条长度为 \(j\) 的链,上面的贡献全是 \(j\),链下方的的贡献是到链顶的长度,其他地方就是 \(f_{u,j}\)。

可以用树状数组优化至 \(O(nm\log)\)。

P14638 [NOIP2025] 序列询问

黑。

考虑维护一个二元组 \((r,w)\) 表示右端点为 \(r\),对应的最小的前缀和为 \(w\),那么每一次移动就是加入一个新的二元组,然后修改一些 \(w\)。

因为修改的范围有限,考虑把不会再做修改的直接弄出来做,剩下的部分的 \(w\) 一定是单调的,所以改的一定是后缀。

所以可以维护每个 \(w\) 对应的区间,按照单调队列的方式去改,当然,一些点的 \(w\) 改变后可能会不再单调,因为这样一定存在 \(sum_x\le sum_y,w_x\ge w_y\),所以直接把 \(y\) 扔掉就行了,时间复杂度 \(O(nq)\),链表维护一下就行了。

P15939 [JOI Final 2026] 传奇团子吃家 / Legendary Dango Eater

紫。

考虑每一次的操作是个什么东西,相当于在剩下的序列的后面再加上一串一种团子,显然的,能取则取一定是优的,所以这就是类似于一个最大子段和的操作。

\(sum=max(sum+a_i,0),ans=ans+\frac{sum}{k},sum=sum \bmod k\)。

然后可以发现如果 \(sum\) 始终大于 0,那么答案就是 \(\frac{sum}{k}\)。

考虑使用一些数据结构找到最近的会使得 \(sum+a_i\le 0\) 的点,然后就可以倍增去跳了。

至于数据结构,用值域线段树维护每个值的最近点就可以了。

P15940 [JOI Final 2026] 花园 3 / Garden 3

紫。

考虑扫描线,这样可以快速找到全部操作都进行完后的四条边线。

显然答案是单调的,所以他们的边线一定在全部操作进行完后的矩形内部,所以双指针维护一下就行了。、

[P15944 [JOI Final 2026] 传送机 2 / Teleporter 2](P15944 [JOI Final 2026] 传送机 2 / Teleporter 2)

黑。

就是最多找 \(k\) 个区间使得它们不交,转成最小点覆盖,就是选 \(k\) 个点。

然后就可以 wqs 二分,上线段树维护就行了。

P16613 [Algo Beat 008 & WWOI R3] Tree Reconfiguration

紫。

写过 apio t3 的话基本容易看出是树上圆理论,然后可以发现就是把一个圆内的点移到另一个圆。

每次将一个圆内的移到另一个圆,都是要放到两个的交叉部分,所以如果放不下就直接失败。

所以可以对于每个圆心和它可以转到的点连边,然后 bfs 一遍,能到达一个包含 \(T\) 所有点的圆就有解,否则没有。

构造上我偷了个懒,正确的是要 dfs,我的方法是分步处理,然后每一步将不在的点依次遍历,找到最近的可以放点的位置移过去。

【UER #13】双料高级特工(alt version)

\(\varnothing\)。

先考虑将 \(c\) 从大到小排序,考虑数位 dp,\(f_{i,j,s,0/1,k}\) 表示第 \(i\) 位,第 \(j\) 个数,\(j-1\) 放 \(0/1\),大于号的状态为 \(s\),后面给的进位为 \(k\)。

然后就是一个插头类似的转移。

然后考虑转回题目要求的符号,\(g_{i,s,t,k}\) 表示已经放的 \(i\) 个数,状态为 \(s\),后面剩下的大小关系为 \(t\),当前数排在 \(k\)。

然后注意一下空间,需要滚动数组+vector。

[AGC010F] Tree Game

蓝。

考虑从一个点出发,如果的点 \(v\) 满足 \(a_u\le a_v\),那么先手就会失败,否则就会由后手从 \(v\) 出发去决策。

以此类推,对每个点为根都去 \(O(n)\) 的扫一遍就行了。

CF2158E Sink

紫。

考虑先并查集把相连的相同点缩到一起,将边定向从小到大,那么答案就是度数为 0 的连通块的个数。

难点在于连通块的维护,因为 \(c/ge 1\) 所以每次修改必然变小,所以原来所在的连通块一定就没有贡献了。

所以直接新建一个点,然后跑周边的点就是对的。

P13695 [CEOI 2025] theseus

黑。

考虑把边先定向,就是让 0 表示从大到小,1 表示从小到大,走的人的策略可以是在可选的边中走能到的编号最大的一条。

然后考虑跑一个 bfs 序,将不同层的边先定好,然后同层的边会比较麻烦。

因为 \(c=14=\log N\) 所以可以类似启发式合并的去做,先按照深度排序,同一深度按照编号从大到小。

接下来对每个点的所有边从大到小排序,去掉已经定好的,这里注意,前面不同层之间的要在这里一起做。

不同按照前面的定,相同就让 \(siz\) 小的到 \(siz\) 大的,然后更新 \(siz\),就是令到点的 \(siz\) 为和,出点的为 0。

P9334 [JOIST 2023] 水羊羹 2 / Mizuyokan 2

黑。

首先可以发现让较小的那些长度为 1 一定是不劣的,记一个段为开头是较小的点,后面的和是较大的。

然后我们就可以求出上一个以 \(i\) 为结尾的段的,一种是从 \(i+1\) 直接继承,一种是从这里开始,找到第一个满足 \(\sum_{j=i+2}^{k-1} a_{j}>a_{i+1}\) 且 \(\sum_{j=i+2}^{k-1} a_{j}>a_{k}\) 的点。

可以发现,每次不满足后一个条件,那么和都是要翻倍的,所以枚举 \(O(\log)\) 的点就是对的。

然后就是从 \(l\) 出发不断往后跳,这个可以按照弹飞绵羊的方法分块。

CF1364E X-OR

紫。

关于 CF 题用的是随机化算法这一块...好吧,能卡了算他开了。

考虑到怎么去知道一个数的值,一种方法是直接和 0 求或,所以可以考虑该怎么找到 0 的位置。

首先我们考虑如何较快的求出一个数的值,可以发现每次询问的值与起来就是所求的值,可以发现,在选的数完全随机的前提下,期望每次减少一半的错误位数,那么 \(\log \log V\) 次询问就可以了。

回归到如何找 0,可以从头开始跑,先求出第一个数的值,然后依次和后面的求或,如果是本身,那么当前数必然是前面的子集,求出这个数一换就行了。

P11696 [JRKSJ ExR] 七影蝶

黑。

拆位考虑,第 \(k\) 位为 1 的条件是 \((a_i+x)\bmod 2^k\ge 2^{k-1}\),可以发现对于每个 \(a_i\),有贡献的是一段区间 \([2^{k-1}-a_i,2^k-a_i)\)。

就有一个 \(\log^2\) 的做法,就是复制然后做区间加。

可以发现对于不同的 \(k\),有效的端点是一个包含的关系,所以可以模拟线段树区间合并的过程,直接往上推。

但是求出每一层的结果后,查询去二分端点复杂度就是假的,考虑可以直接把 \(l,r\) 离线下来,每次推的时候把 \(l,r\) 一并插进来就行了。

因为涉及排序,是一个从低位向高位去比较的过程,可以用基数排序实现。

P10121 『STA - R4』保险丝

黑。

模拟赛 t1,\(n^2\) 艹过去了(但后来被卡了。

如果是链那么因为 \(f_2\) 为 1,那么整条链上的贡献就是确定的,可以直接转,所以有一个思路就是直接把两度点缩掉。

此时除去根的点,最少有 2 个儿子,这样有贡献的点数就是 \(\log\) 级别的,暴力即可。

CF2219B2 Unique Values (Hard version)

蓝。

简单题,首先考虑怎么判断一段内有没有一个数出现 3 次,假设数的数量为 \(x\),出现一次的数的个数为 \(y\),若 \(x-y \bmod 2=1\),那么就有出现 3 次的数。

考虑二分,每次问一个 1 开头的连续段,找到恰好出现 3 次的位置,这个点就是最靠后的。

然后问这个点 + 前面的连续段,继续二分就是对的。

AT_agc044_d [AGC044D] Guess the Password

黑。

考虑先问长度为 128 的单字符序列,这样就可以知道每个字符的出现次数。

如果一个序列是原串的子序列,那么询问的结果就是长度之差,考虑如果我们已经知道两个子序列,考虑怎么合并。

可以取第一个串还未合并的第一位,然后和另一个串剩下的拼在一起,归并处理复杂度就是对的。

posted @ 2026-04-29 16:25  wangsiqi2010916  阅读(202)  评论(0)    收藏  举报