联合省选 2021 游记

前言

第一次参加省选,意料之中的失败了,但是也学到了很多。

目前初三,中考ing,考完自然是回归 whk。

人在 JX,B 卷,最后总分简直没法看:100 + 40 + 12 + 60 + 25 + 60 = 297,挂分太严重。

Day -1

日常敲板子 + 调整心态。

自我安慰说即使失败了也还有两年。

回顾停课的一段时间发现已经进步了不少,即使最终没有进队也确实学习到很多了。

同时也难免期待着奇迹的发生。

然后就是展望高中生活了,虽然不知道中考最后会怎么样。

Day 0

因为不是本市比赛,下午就要出发,所以上午早早地就起床,把计划中的练手题都打掉。

但是发现题目准备的太多了,然后又都感觉很重要,所以一直到晚上到宾馆之后还在敲题目...。

最后九点多的时候总算敲完了。

然后就是水群 + 膜神仙涨 rp,发各种 rp ++。

Day 1

没心情吃早饭,也习惯了不吃早饭。

起得挺早的,没事在校园里散了会步,算是调整心态吧。

然后提前一个小时到考场所在楼,硬是找了半个小时考场...。

然后又在门口等了十分钟,提前二十分钟把人都放进去了,看见不少 Dalao 倒是真的。

没事敲了个快读模板,试了一下编译器,又想敲个 LCT,结果敲一半被告知发题了。

T1 一眼水题,非常符合 B 卷风格。敲完 + 拍上用时 15 min。

然后 T2 没有一眼,感觉很慌,决定先看完所有题目。

T3 看上去很不可做,遇到这种新定义函数的题目就望而却步了,还是心态太慌。

回头看 T2 后先打了 40 pts 的暴力代码,想着如何优化。

我的方法和大众的双指针好像不太一样,暴力代码用的是 二分答案 + 暴力 \(O(n^2)\) 判定。

然后发现问题转化一下之后变成经典的二维数点问题,于是上个主席树就 \(O(n\log^2 n)\) 切掉了(吗?

然后硬调了 2h + 没有调出来,心态当场爆炸。

最后 30 min 也没时间分析 T3 的性质,只能 16 pts 跑路,检查一下文件输入输出就交卷了。

出考场慌得一批,想着本来能切但却无能为力的 T2,估分 100 + 40 + 16 = 156。

晚上没心情看题目了,但是突然发现考生源代码发了下来,就决心把 T2 改过。

然后不到 10 min 就发现是一个 last 打成了 p,改了之后开 o2 民间数据跑得飞快,不开也有 90 pts。

于是就是各种后悔了...。

分析了一下,认为如果是 100 + 100 + 16 就挺大众分的,但 100 + 40 + 16 就基本没希望了。

于是就只能听天由命了。

最后成绩:100 + 40 + 12 = 152,至今不知道 T3 暴力哪里写挂了,但也没有大影响。

Day 2

同样不想吃早饭,同样去散步。

同样提前 20 min 进考场,发现昨天的文件都没有删除,于是抢着把昨天 T2 的代码改对来,当然于事无补。

然后接着把打到一半的 LCT 打完了。

发题,T1 没有一眼,但是和昨天一样很 CF 风。

T2 树上问题,想了很多但是都被自己 Hack 了,个人认为有一个想法已经比较接近正解了。

但是想的更多的还是树上莫队,然后发现应该是 树上回滚莫队,然后发现不会...。

口胡了很久都不知道如何把 树上莫队和回滚莫队结合,还是太菜了。

T3 发现全排列就 60 pts 了,暴力分还是很足的。

于是就先拿了 T1 和 T3 的 60 pts,T2 暂留。

然后想 T1 正解,想过从大往小判断,小于答案直接 break,但个人认为这只是一个小剪枝而已,

然后发现如果所有数都一样,或者相同的数很多,那么这种做法就直接卡到 \(O(n^2)\) 了,于是弃了。

然而令人好奇的是,官方数据就直接放这种做法过去了,不知道为什么。

然后就回忆之前 CF 中有关 mod 的结论题,想起来都和最大的数字有关,于是就上了个伪结论。

就是模数一定是最大的数,显然是不靠谱的,但是大样例和随机样例上面十分优秀,拍了 2000 组没有问题。

然后就扔了。

看 T2,发现还是不会,只好拿 25 pts 跑路。

再看 T3,发现将枚举全排列改为 dfs + 剪枝 可以将时间复杂度变为 \(O(\rm Ans)\) 的,于是赶快写了。

然后大样例跑得飞快,而且还没开 o2。

然后就各种想 T2,最后到交卷都基本没有动过键盘了。

出考场估分:[60,100] + 25 + [60,80] = [145,205]。

感觉如果是最高分 + 昨天调出 T2 的分数就挺可观的(216 + 205 = 421),但是显然不太现实。

最后出分:60 + 25 +60 = 145。

可以发现出数据人的水平在某些方面还是挺高的,但是就是不知道 T1 为什么放假做法过了。

然后简单了解了一下 T2 正解,发现还是题目做少了,思想类似倍增 Lca,再套上个二分,其实不难...。

然后就回家自闭 whk 去了,但是由于民间随机数据的优秀表现,总是还有抱有一丝希望。

Day now

上午看到了 JX 成绩的总表,发现自己 rk 16,果然还是弱。

然后那些熟悉的,一直作为榜样的 Dalao 们还是进队了,意料之中。

和他们之间还是有差距吧,也不敢再奢求什么了,也成长了很多,成绩也很好的反馈了这段时间的努力。

毫无疑问努力是值得的,虽然或许结果并不令人满意吧。

被教练安慰说去掉前面高二退役的 Dalao 们可以派上 rk 6,所以预料我明年稳进队...。

好像还挺有道理的

20-21 赛季对我来说就全部结束了,还是那句话,不敢再奢求什么了。

虽然这个赛季总体还是伤心偏多,但是也让自己认识到了很多吧。

很幸运的在 JX 这个竞争力不太强的省份,又很幸运的能有那么多 Dalao 作为榜样。

值得继续努力下去吧,毕竟 21-22 赛季也还差 200 余天就来了。

还有就是希望新的高中生活能够变得更好吧,无论是 whk 还是 OI 了。

愿所有 OIer 皆学有所成

简单题解

Day1 T1

符合 B 卷难度,直接 \(O(n\log n)\) 调和级数枚举倍数即可。

简单题不放代码。

Day1 T2

已经想到正解但是没打出来...。

将所有数排序,然后二分答案,检验时使用双指针可以 \(O(n)\),总复杂度 \(O(n\log n)\)

考场上想到的是再来个二分 \(O(n\log^2 n)\) 也是可以的,但是不知道哪里想多了。

一个前后缀和就可以维护的东西,突然联想到用主席树维护...。

Day1 T3

思维题。

按照常规不能考虑一个一个判定,要考虑每个点对对答案的贡献。

比较难想的地方是,得到每个点对最晚断开的时间,然后差分得到答案。

再来一个转化就是 \(f(u,G)\) 即满足不经过小于两端点的点能互相到达的点对数量 \((u,v)\)

然后就是 Floyd 的事情了。

还要注意卡常,循环展开一下 \(O(n^3)\) 就跑不满了。

Day2 T1

玄学题,什么方法都有就是了,怎么骗都能过脚造数据把。(于是我没过)

Day2 T2

倍增 + 主席树维护。

首先预处理倍增数组,\(f_0(u,i)\) 表示从 \(\rm col(u)\sim col(u)+2^i\) 这条颜色路径的另一个端点的位置。

由于还要处理向下的链,所以还要类似的定义一个 \(f_1\)

然后需要利用主席树实现操作 \((u,c)\) 表示 \(u\) 的祖先中颜色为 \(c\) 的最深的位置,这是基础操作了。

然后处理向下的链时,由于不知道端点,但是有显然的单调性,所以二分个答案再利用主席树 + 倍增即可判定。

然后就 \(O(n\log^2 n)\) 大常数解决了这道题。

Day2 T3

目前只会 \(O(n!)\) 的暴力 60 pts,但觉得也差不多了

回首

2022.5.1 一年后再回首,还有恰好一周迎来人生第二次省选。

从跌倒之地爬起,涅槃重生。(什么魔怔语录)

当时实际写过题解了,但是感觉实际上完全是以一个失败者/愤青的身份发泄的无能狂怒。

所以还是再正常分析下人生中第一场省选为好。

还放到 UOJ 上测了一下,发现几点:UOJ 的机子不慢、UOJ 的 Hack 质量很高、UOJ 的 Hack 喜欢卡常。

「联合省选 2021 A | B」卡牌游戏

给定 \(n\) 张正反两面均有数字的牌,初始全部正面朝上,至多翻转 \(m\) 张,求最小极差。

\(\texttt{Difficulty 2}\)

实际上当时的思路挺正确的,只是思维水平仅停留在用高级数据结构大力维护。

而这种能简单就简单,返璞归真的思维实际也就是最近才培养起来的。

直接把所有数排成一个序列,二分答案,双指针扫一遍,每次要求区间外的 正面 \(\leq m\) 个,且它们的 反面均在区间中。

直接维护前缀和,前后缀 min/max 即可。

「联合省选 2021 A」矩阵游戏

给定 \((n-1)\times (m-1)\)\(B\) 矩阵,构造 \(A\) 矩阵满足 \(A_{i,j}+A_{i+1,j}+A_{i,j+1}+A_{i+1,j+1}=B_{i,j}\),且 \(A_{i,j}\in[0,10^6]\)

\(\texttt{Difficulty 3}\)

调整法往往是构造的一个方向。

先假设 \(A_{n,j}=A_{i,n}=0\),那么可以顺势递推整个矩阵,显然这之中可能有负数,还可能有 \(>10^6\)

什么操作可以在保证正确性的情况下改变矩阵的值呢,发现可以对一行进行 \(+1,-1,+1,-1,\cdots\) 的交替操作。

这样是不改变任何 \(2\times 2\) 的矩阵的值的,对于列也一样。

如果设第 \(i\) 行最终加了 \(x_i\),第 \(j\) 列加了 \(y_j\),那么如上就是要求 \((-1)^{i-1} x_i+(-1)^{j-1}y_j+A_{i,j}\in[0,10^6]\)

这是个和分约束,并没有什么好的方法维护。

但是差分约束是我们熟悉的,改变方法也很简单,发现可以让列 \(-1,+1,-1,+1,\cdots\),反之就是每个格子的行列符号不同。

那么就变成了 \((-1)^{i+j-1}(x_i-y_j)+A_{i,j}\in[0,10^6]\),这是不难维护的。

值得注意的是,建图得到的是个强连通图,也就是说任选一个点为起点即可。

「联合省选 2021 A | B」图函数

题意复杂。

\(\texttt{Difficulty 3}\)

看上去很唬人的题目,一定不能被吓到,耐下心来分析条件。

枚举两个点之间加大的点 \(u\),发现 \((u,v)\) 之间有贡献,当且仅当能仅通过 \(\geq v\) 的节点从 \(u\to v\)\(v\to u\)

这样的路径有很多,和删边有什么关联呢,发现需要最大化是路径上边的编号的最小值。

这样这条路径能贡献的图就最多,不难用 Floyd 维护上述过程。还是挺卡常的,一定要多减减枝。

「联合省选 2021 A | B」宝石

树上每个点有颜色,给定颜色序列,多次询问 \((s,t)\) 的树上路径上的最长子序列,满足它是该颜色序列的前缀。

\(\texttt{Difficulty 2}\)

当时属于是学傻了,直接树上主席树 + 倍增 + 二分上就完了。

\(O(n\log^2n )\),但目测常数很大。

「联合省选 2021 A | B」滚榜

题意复杂。

\(\texttt{Difficulty 3}\)

首先要读懂题意,当时读了 30min 多的题,一定结合小样例!!!

每次的人都是要和没加的人一起排名的,每次的 \(b\) 单调不降。首先有 \(O(n!n)\) 的贪心检验方法。

扫一遍,若 \(a_i< a_{i-1}\)\(b_i=b_{i-1}+(a_{i-1}-a_i)\),否则 \(b_i=b_{i-1}\)。然后时刻要求 \(\sum b_i\leq m\)

看数据范围大概正解是个状压,直接的想法是设 \(f(s,i,j,c)\),表示当前集合 \(s\),上一次是 \(i\),且 \(b_i=j,\sum b=c\)

但是状态就意味着逃不开 \(O(m^2)\) 的枚举,很不能接受。

这时代价提前计算的思想就十分重要,考虑根据上述贪心有 \(\sum b_i=\sum \max(a_{i-1}-a_i,0)\times (n-i+1)\)

那么就可以顺势消掉一个 \(j\),复杂度变为 \(O(n^22^nm)\),可以接受。

「联合省选 2021 A」支配

若所有从 \(1\) 出发到 \(v\) 的路径都需要经过 \(u\),那么称 \(u\) 支配 \(v\)

多次询问,每次加一条边 \((s,t)\),问有多少点能支配的集合发生了变化。

\(\texttt{Difficulty 5}\)

不加证明地提出以下引理(实际上是支配树入门理论):

  • 加边只会让点的支配集合减小。
  • 支配具有传递性,即 \(a\) 支配 \(b\)\(b\) 支配 \(c\),那么 \(a\) 支配 \(c\)
  • 支配具有树链性,即若 \(a\) 支配 \(c\)\(b\) 支配 \(c\),那么 \(a,b\) 之间存在支配关系。
  • 设支配点 \(u\) 的点的集合为 \(D(u)\),那么一定存在它的极大支配点 \(fa\),满足 \(D(u)=D(fa)\cup\{fa\}\)
  • 根据 \(fa\to u\) 的关系建立支配树,支配一个点的集合就是它到根的树链,且原图的支配关系完全等价于该树。

根据定义可以处理出 \(\text{dor}(x,y)\) 表示删除 \(x\) 后是否有路径 \(1\to y\),然后根据定义建立支配树。

于是归入树的部分分,那是很简单的。

一个点的受支配集发生变化,一定有 \(fa\) 不再支配 \(u\),因为它是最容易改变的。

加入的边 \((s,t)\),若在删除 \(fa\) 的情况下,有路径 \(1\to s,t\to u\),那么就成功了。

于是在维护 \(\text{del}(x,y)\),表示删除 \(fa(x)\) 后是否有路径 \(y\to x\),建反图预处理即可,复杂度 \(O(n^2 +nq)\)

「联合省选 2021 B」数对

入门题。

「联合省选 2021 B」取模

给定序列 \(a\),求 \((i,j,k)\) 满足它们互不相等,且 \((a_i+a_j)\bmod a_k\) 最大。

\(\texttt{Difficulty 3}\)

说自己是愤青的来源。

根据取模相关的简单讨论,枚举 \(a_k\) 就可以暴力 \(O(n\log n)\) 检验取模后最大值。

所谓的小剪枝:将 \(a\) 降序排序,若有 \(\text{ans}\geq a_k\)break

实际上就保证了复杂度,设最终停在 \(x\),即 \(a_x\leq \text{ans}<a_{x+1}\)

那么 \(\forall i\in[x,n],\text{ans}\geq (a_{i-1}+a_{i-2})\bmod a_i\geq a_{i-1}+a_{i-2}-a_i\),且这还是个放缩(只是取模讨论中的一小部分)。

那么有 \((a_i-\text{ans})\geq (a_{i-1}-\text{ans})+(a_{i-2}-\text{ans})\),设 \(b_i=a_i-\text{ans}\),那么它是以斐波那契的速度增长的。

显然最大也就 \(V\),故最终 \([x,n]\) 这一区间长度一定是 \(O(\log V)\) 级别的,而且是个很松的上届。

posted @ 2021-04-21 00:11  LPF'sBlog  阅读(126)  评论(1编辑  收藏  举报