2025.1做题记录

洛谷P10369 「LAOI-4」Mex Tower (Easy ver.)
最大答案肯定是 \(2\)
然后构造就得。
暴力一会可以得到一个表:
2
0 1
2 2 0
1 0 1 1
0 2 2 0 2
1 1 0 1 1 0
0 0 2 2 0 2 2
1 1 1 0 1 1 0 1
0 0 0 2 2 0-2 2 0
1 1 1 1 0 1 1 0 1 1
0 0 0 0 2 2 0 2 2 0 2
规律就是:
\(n\) 是奇数是,就输出 \(\left \lfloor \frac{n}{2} \right \rfloor - 1\)\(0\),然后输出一堆 \(2 2 0 2 2 0\)
偶数就是 \(1\) 然后 \(0 1 1 0 1 1\)

洛谷P4169 [Violet] 天使玩偶/SJY摆棋子
如果只看左下角的点,那么每个 \(op=2\) 的答案就是 \(x_i + y_i - \max\limits_{t_j<t_i,x_j\le x_i,y_j\le y_i} \left \{x_j+y_j\right \}\)\(t\) 是时间。然后这个玩意 cdq 随便做。
因为距离和点在那个方向无关,所以可以每次把每个点转 \(90\)° 再统计贡献,做四次。
当然也可以写四种cdq()。

洛谷P4093 [HEOI2016/TJOI2016] 序列
考虑 dp 以每个 \(i\) 为结尾的最长子序列长度,转移方程为 \(dp_i = \max\limits_{j<i,mx_j\le a_i,a_j\le mn_i} \left \{ dp_j \right \} + 1\)
\(mx_i\) 是所有变化中最大的 \(a_i\)\(mn_i\) 就是最小的。
容易发现这个转移是三维偏序,所以考虑用 cdq 做。
注意用 cdq 维护 dp 时要先转移再递归右边,因为如果先递归右边,那么右边的 \(dp\) 值就没有左边的贡献。

洛谷P5227 [AHOI2013] 连通图
考虑线段树分治,用并查集维护联通。
并查集可以按大小合并,然后看某个点的最顶上那个点的大小是不是 \(n\) 就能判断连通图了。
其它的都是板子()。

洛谷P5305 [GXOI/GZOI2019] 旧词
首先做 P4211 [LNOI2014] LCA。
我们发现这道题就是 P4211 加上 \(k\) 次方。
注意到 \(dep_x^k = \sum\limits_{v \in r(x)} dep_v^k - dep_{fa_v}^k\)\(r(x)\)\(x\) 到根的路径。
所以把 P4211 的点权加 \(1\) 看成加 \(dep_x^k - (dep_x - 1)^k\)
但是区间加这个值还是不能做。
因为每个点每次加的值都是固定的,所以在线段树的每个点上记一下区间里这个值的和,然后就变成区间加 \(1\) 了。

abc384g Abs Sum
这么水的题我怎么赛时没切啊???
首先建 \(A\)\(B\) 的可持久化线段树,然后用莫队跑询问,每次移动就加或减另一边的绝对值的和就可以了。
那么怎么 log 查线段树上所有值和一个值的绝对值的和呢?
每次看那个值是在哪边,然后把另一边所有值的贡献加上去就得了。

posted @ 2025-01-05 23:06  天域_awa  阅读(26)  评论(0)    收藏  举报