若我们并肩作战,你要照顾好自己哦?|

xingyu_xuan

园龄:1年6个月粉丝:12关注:1

挣扎中的赛季末

前言

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

Day 1 5.28

Day 1

补了昨天考试的题。

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

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

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

然后有一个结论就是凸包上整点个数是 O(n23),不知道为什么。但是算出答案确实只有最多 290 个点。这个时候的背包理论上就是 O(n83)

交换答案和某一维的状态,设 fi,j 是选 j 个向量,使得 pxp=i 的最小的 qyq。转移是简单的。此时复杂度为 O(n73)。最后记得做一个二维前缀 max 就行了。

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

Day 4

只能背叛自己。

Day 5

省流:场上是智障。

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

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

Day 6

笑点解析:平衡树,n1000

最不会 ov-tree 的一集。

Day 8

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

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

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

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

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

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

T3 支配树。

Day 15

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

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

T2 不知道是什么东西。

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

Day 16

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

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

SG(u)=mex((u,v)E{SG(v)})

本文作者:xingyu_xuan

本文链接:https://www.cnblogs.com/xingyuxuan/p/18217474

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   xingyu_xuan  阅读(62)  评论(10编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起