2024.3

SCOI 的故事说明我确实是一个下限很低,上限不高的选手。DAY2 翻盘很爽,但事实上这两天加起来就是个 Ag 表现。PKUWC 的时候也是很不稳定啊。

现在最大的能提升的地方,大概就是让自己的状态保持成一种能流畅想题的心平气和的状态吧。动不动就崩盘真的受不了。修炼自己的心,别太散漫,但也别太急。

做好该做的事情。不要走 Cu 的老路了。

打 JOISC 发现自己水平退化成二流选手了怎么办捏

下面是 whk 期间用空余时间做的一些好题+一句话题解

-1.SCOI D1T2

送命题。

用 SGU209 的方法划分出 \(O(n^2)\) 个区域。然后需对每个区域计算有多少条直线在它右手,注意到相邻区域间的权值差只和隔开它们的直线有关系,于是随便 dfs/bfs 一下就算出来了。总复杂度应该是 \(O(n^3\log n)\)

0. SCOID2T2

救命题。

首先要观察到答案 \(\le 2\) 。转化成对 \(O(1)\) 个图维护左上角到右下角的割边。随便取一条 (1,1) 到 (n,m) 的路径,对每个点记下它在生成树上往上走遇到的第一个这条路径上的点,则每次连边就直接转化成区间覆盖了。

1. 联考D1T2 按位确定答案,即可避免每次遍历 trie。

2. 联考D2T1\(dp_{i,j}\) 为第 \(i\) 个点代表的序列开头为 \(j\) 的最小费用,即可转移并以此得到方案。

3. 联考D2T2 经典 DAG 容斥,把系数想清楚就好了。最后要拉插优化压掉一个 \(n\)

(D1T3&D2T3 咕一下。)

4. AGC057E RowCol/ColRow Sort

分析 01 看性质,再对 \(0\le x<10\) 观察 \(t_{i,j}=[A_{i,j}\geq x]\) ,则每一层的 \(t\) 都是本质相同的。只需对上一层的任意一个 \(t\) ,计算下一层的 \(t\) 的方法即可,分析清楚后就是经典的 dp。

5. P6730 [WC2020] 猜数游戏

先把问题抽象成一个图上数合法子图的问题。然后这个图有很特殊的性质,就容易计数了。

6. P5548 [BJ United Round #3] 押韵

比较难的一步是算小多项式(二元)的 \(n\) 次幂,其实是和一元相同的,只不过变成求偏导。令 \(G=F^k\),则 \(G'=kF'F^{k-1}\) ,即 \(FG'=kF'G\) 。比较两边系数即可递推出 \(G\)

7. [ARC139F] Many Xor Optimization Problems q-binomial 练手好题。

8. P9366 [ICPC2022 Xi'an R] Square Grid 反射容斥好题,二维象棋世界。

9. P9623 [ICPC2020 Nanjing R] Baby's First Suffix Array Problem

怎么说呢,一些看似比较难的数点问题可以用分治轻松化解。

(ucup2-25:13个套路题。)

10. P10256 高仿的 Migos 注意到 \([x_i,i)\) 之间只有相交或包含关系,由此即可建树计算了。

11. CF1930I Counting is Fun

最难的一步是计算 \(g_n\) 表示从 \((0,0)\) 出发走到 \((n,k)\) 使 \(k\) 为纵坐标最大值的方案数。

直接套用象棋世界的做法,则 \(g_n\) 能表示成 \([x^0]C(x+x^{-1})^n\) 的形式,分治计算即可。

(没看 DAY1)

12. JOISC D2T1 分别设计出了 \(O(nk\log n)\)\(O(\frac{n^2}{k})\) 的做法然后拼起来。

13. JOISC D2T3 分类讨论题。

14. JOISC D3T2 类似于 ddp 的套路题。

15. JOISC D3T3 \(AD\le B\) 是容易的。 \(AD>B\) 时,考虑看成一个无尽的网格图,每行有 \(d\) 个格子。每次可以往下往右走,也可以以 \(1\) 的代价从一行末尾走到下一行开头。这样转化之后问题就挺明了了。这 trick 见过很多遍了,赛时竟没想到,一躺床上就想到了,主要是心理有些浮躁了。

16. JOISC D4T1 根号分治。

17. JOISC D4T2\(1\) 为根,通过 \(ask(1,i)\) 得到 bfs 序,然后每次取还没找到父亲的点中 bfs 序最小的 \(u\),从 \(j=1\) 开始不断查 \(v=ask(u,j)\) ,如果 \(v\) 的 bfs 序在 \(u\) 前面那 \(f_u=v\);否则 \(f_v=u\) ,并令 \(j:=j+1\) 。因为每次查询都确定了一个新的 \(f_i\) ,所以只会弄 \(n-1\) 次就结束了,加上前面的 \(ask(1,i)\) ,就是 \(2n-2\) 次。

18. JOISC D4T3 首先三元环个数可以转化成 \(\tbinom{n}{3}-\sum \tbinom{d_i}{2}\)\(\sum d_i\) 的上界显然在 \(d_i=i-1\) 时取到;而下界就是尽量平均地分 \(d_i\) 。打表可以发现这中间的值都是能取到的,可以通过以下的调整方式完成:令 \(t_i\)\(\sum [d_j=i]\) ,从 \(d\) 最平均的状态开始,每次选一个 \(t_i\geq 2\)\(i\) 最大的位置,并使 \(t_i\) 减掉 \(2\)\(t_{i-1},t_{i+1}\) 各加 \(1\) ,显然每次 \(\sum \tbinom{d_i}{2}\) 加上 \(1\),而且可以通过打表发现这样的调整始终满足兰道定理。但这样调整次数会达到 \(O(n^3)\) 的级别。 优化的方法是,如果 \(d_n\) 可以 \(=n-1\) 就直接填,递归到 \(n-1\) 的情况,可以发现这样最后就只需调整 \(O(n^2)\) 次了。复杂度即 \(O(n^2\log n)\)\(O(n^2)\)

19. CF1924E Paper Cutting Again

可以看成是将 \(n+m-2\) 条切割线任意排序,其中有效线的期望。期望线性性,拆成每条线有效的概率。有效线的话,以 \(x=i\) 这条线为例,要求 \(x=j\) 满足 \(j<i\) 的线都在这条线后面;且为了满足面积 \(\geq k\) ,需要 \(y=j\) 满足 \(ij<k\) 的线都在这条线后面。设二者的个数和为 \(a\) ,则该线有效的概率显然为 \(\frac{1}{a+1}\) 。最后加起来就好了。

20. gym104030K Keyboard Queries

维护 \(a_i\) 表示每个点当前所属联通块的编号,同时维护 \(a\) 的反串 \(a'\),每次新加入回文串时利用 哈希+BIT 求出 \(a[l:]\)\(a'[n-r+1:]\) 的 lcp,这样我们每次都会连一条新的有效边,单次复杂度 \(O(\log^2n)\),总共 \(O(n\log^2n)\) 。合并两个联通块时启发式合并即可,有 \(O(n\log n)\) 次对 \(a/a'\) 的修改,复杂度仍是 \(O(n\log^2n)\) 的。查询就是直接哈希判断。

21. gym103860I Reverse LIS

至多 \(k\) 次操作后的最大 LIS 可以转化成:取一个最长的子序列,使得其操作至多 \(k\) 次后能变成 \(00\dots0011\dots 11\) 。可以发现这只和连续段个数以及开头连续段类别有关。于是考虑记 \(dp_{i,0/1,0/1,j}\) 表示考虑了 \([1,i]\) ,当前有 \(j\) 个连续段以及开头末尾的状态,子序列的最大长度。但这是 \(O(n^2)\) 的,考虑优化。注意到这个 dp 是凸的,即 \(dp_{i,0/1,0/1,x}\) 是凸的。于是我们在线段树上进行 dp,对于每个节点 \(p\) 记下来 \(dp_{p,0/1,0/1,x}\) ,定义和上面是类似的。合并左右端点就是闵可夫斯基和一下,复杂度 \(O(n\log n)\) ,常数较大。

22. gym103428C Assign or Multiply

先求出 \(p\) 的原根,转化成一个模意义下的 01 背包问题。

每次加入一个物品,需要找到所有 \(dp_x=1\)\(dp_{(x+a)\bmod p}=0\) 的位置。直接找是困难的,但我们注意到,\(dp_x=0\)\(dp_{(x+a)\bmod p}=1\) 的位置数量是相等的!理由是 \((x,(x+a)\bmod p)\) 形成了若干个环,每个环上 \(01\) 个数和 \(10\) 个数一定相同。

于是把 \(dp\) 复制两份,找出 \([0,p)\)\([a,p+a)\) 中所有不相同的位置即可。BIT 维护哈希数组,每次二分算 lcp 即可,复杂度 \(O(n\log^2n)\)

posted @ 2024-03-23 22:29  grass8woc  阅读(157)  评论(0编辑  收藏  举报