2024.3

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

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

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

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

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

-1.SCOI D1T2

送命题。

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

0. SCOID2T2

救命题。

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

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

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

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

(D1T3&D2T3 咕一下。)

4. AGC057E RowCol/ColRow Sort

分析 01 看性质,再对 0x<10 观察 ti,j=[Ai,jx] ,则每一层的 t 都是本质相同的。只需对上一层的任意一个 t ,计算下一层的 t 的方法即可,分析清楚后就是经典的 dp。

5. P6730 [WC2020] 猜数游戏

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

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

比较难的一步是算小多项式(二元)的 n 次幂,其实是和一元相同的,只不过变成求偏导。令 G=Fk,则 G=kFFk1 ,即 FG=kFG 。比较两边系数即可递推出 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 注意到 [xi,i) 之间只有相交或包含关系,由此即可建树计算了。

11. CF1930I Counting is Fun

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

直接套用象棋世界的做法,则 gn 能表示成 [x0]C(x+x1)n 的形式,分治计算即可。

(没看 DAY1)

12. JOISC D2T1 分别设计出了 O(nklogn)O(n2k) 的做法然后拼起来。

13. JOISC D2T3 分类讨论题。

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

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

16. JOISC D4T1 根号分治。

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

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

19. CF1924E Paper Cutting Again

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

20. gym104030K Keyboard Queries

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

21. gym103860I Reverse LIS

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

22. gym103428C Assign or Multiply

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

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

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

posted @   grass8woc  阅读(305)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示