挣扎中的赛季末

前言

别看这标题非常像一个神秘的叙事文,但是实际上这是篇考试总结 + 类日记。

Day 1 \(\Leftrightarrow\) 5.28

Day 1

补了昨天考试的题。

T1 智障了。不难发现如果找到全局最优点对,剩下就只有这两个点到根这两个路径上的点不是这个答案,然后扫两边就行了。

T2 神仙 DP。考虑到我们可以把一个 \((n-k,m-k)\) 的方案掰到 \((n,m)\) 上,具体就是第一个向量的横坐标 \(+k\),最后一个向量的纵坐标 \(+k\)。因为任意一个不重向量组加起来等于 \((n,m)\),最后总能重排成有序的状态使得合法,所以加入可以没有顺序,使用 01 背包可以做到复杂度 \(O(n^4)\)。因为是不重向量组,所以我们要踢掉 \(\gcd(n,m)\not=1\) 的向量。

因为我们已经可以掰方案了,所以我们这里可以贪心,选小的越好,所以对于一个向量 \((x,y)\),我们一定是选完 \((\leq x,\leq y)\) 的向量再选这个,否则我们可以替换使得至少某一维更小。打出来表有 600 个向量满足所有条件。

然后有一个结论就是凸包上整点个数是 \(O(n^\frac{2}{3})\),不知道为什么。但是算出答案确实只有最多 \(290\) 个点。这个时候的背包理论上就是 \(O(n^\frac{8}{3})\)

交换答案和某一维的状态,设 \(f_{i,j}\) 是选 \(j\) 个向量,使得 \(\sum_p{x_p}=i\) 的最小的 \(\sum_q{y_q}\)。转移是简单的。此时复杂度为 \(O(n^\frac{7}{3})\)。最后记得做一个二维前缀 \(\max\) 就行了。

T3 nxbj,等我做 DS 的时候再说。

Day 4

只能背叛自己。

Day 5

省流:场上是智障。

T1 一直在想二分,最后糊了一个把所有区间拍下来排序然后双指针的做法,场上以为这个东西没有前途,结果赛后发现把 \(O(n^2)\) 个区间换成每一层最靠近原来平均数的两个区间就行了,我是傻逼。原题 P8424。

T2 找规律。T3 逆天 meet-in-middle。

Day 6

笑点解析:平衡树,\(n\leq 1000\)

最不会 ov-tree 的一集。

Day 8

T1 最大智障。我想的是神秘的长链剖分优化 DP,好像需要闵可夫斯基和合并(。正解是把这个东西重新连边形成一颗二叉树,然后因为第一步向上,所以二叉树 size 为偶数时不能继续向上合并;启发式合并二叉树的 size,每次合并两个最大的 size,然后考虑到两个偶数无法合并。考虑可以把某个偶数剥掉一个点合并。如果是最大偶数和最大奇数合并,如果没用上次大偶数一定不比两个偶数合并优,用上了之后和用两个偶数合并一致,所以两个偶数合并更优。

合并途中需要保证集合内的元素和是子树大小。

T2 JOI 2022 Giraffes。智障完了。首先注意到这个东西有一个性质,考虑把最大值和最小值全部放在一个区间非端点处,你会发现一定不满足条件,所以我们只需要保证最大值或最小值有一个在端点处。这样的话就会发现存在一种区间合并方式使得每个区间的值域连续,我们就可以根据这个东西区间 DP,设一个区间和值域的未改变数的最大值为状态,转移 \(O(1)\),总复杂度 \(O(n^3)\)

考虑探究这个最大值或最小值有一个在端点处的其他性质。不难发现一个我们把最大值放左边,最小值放右边的加入一个 LDS,其他的加入一个 LIS,那么整个序列被划分成一个 LIS 和一个 LDS。根据某个结论,一个随机排列的的 LIS 或 LDS 长度是 \(O(\sqrt n)\) 的,所以上面那个 DP 的答案的值域是 \(O(\sqrt n)\) 的。遇到这种情况,我们肯定尝试把这个 DP 的答案塞到状态里。

考虑先转化问题,我们钦定一个初始点(边长为 \(0\) 的正方形),每次最大值放左边就将左端点进行 \((-1,+1)\),其他类似,我们能得到一个正方形序列。设原排列为 \(p_i\),钦定关键点为 \((i,p_i)\),如果在这个序列里边我们能找到一个正方形序列,使得每个正方形互相包含(可贴),并且每个正方形都有一个关键点在四个角的任意一个(每个正方形对应的关键点不同)。不难发现该正方形序列是由一个方案简化得到,并且它的最长长度就是答案。这样我们能设出状态 \(f_{k,i,j}\) 为正方形序列长度为 \(k\) 时关键点 \((i,p_i)\) 为正方形的 \(j\) 角(即 \(j\) 是一个方向)时的最小正方形长度。每层转移是枚举上一层的所有矩形更新答案,时间复杂度 \(O(n^2\sqrt n)\)

最后一步就是最恶心的,考虑这个问题可以变成:在一个 2-side 矩形中找一个矩形使得其距离最远点构成的正方形边长最小,这个东西可以扫描线做,需要拆正方形边长的贡献,然后加入枚举的同方向的点,非常史。最后复杂度为 \(O(n\sqrt n\log n)\)

T3 支配树。

Day 15

前面还有一场考试就不写了。

T1 原 P9351,就是一个边界转移的 01 BFS,用并查集优化枚举做到 \(O(rc\alpha(\max(r,c)))\)

T2 不知道是什么东西。

T3 原 P5227。牛牛哈希题。掰出来一棵生成树,不连通的条件就是对一个树边,删去它和它子树中的所有一端在子树中,另一端不在子树中的非树边。你发现如果我们给非树边设置一个随机权值,两端的的点权都异或上这个权值,那么那个树边的权值就是子树点权异或和,因为端点都在或都不在子树内的非树边此时没有影响。用线性基查找有无子集异或为 \(0\) 即可(看是否线性相关,即看是否某个元素插入不进去)。

Day 16

对一个游戏求 SG 函数就是暴力在生成 DAG 上 DFS 跑啊。我之前连 SG 函数的定义都不知道是什么(

对于 DAG 上的一个点(状态)\(u\)

\[SG(u)=\operatorname{mex}(\bigcup_{(u,v)\in E}\{SG(v)\}) \]

posted @ 2024-05-28 11:22  xingyu_xuan  阅读(45)  评论(8编辑  收藏  举报