NOI2021同步赛 游记

· · 个人记录

DAY1

CCF那边出了点小问题,比赛晚开始了1.5个小时。

T1

刚开始看到题,以为这是LCT。

毕竟可以把重边看成偏爱儿子。

但我没做过几道LCT,没敢下手。

看了半个小时才有一个比较可靠的思路。

很暴力,先树链剖分,然后开两颗线段树,设 p[x] 表示点 x 连向父亲的边是否是重边,可以用一棵线段树维护,支持区间赋值为 1,0

但这样还不够,考虑到题目说每次要把和 x 有关的边先全部变成轻边。因为 x 的所有边中最多只会有两条重边,分别记录一下。

怎么记录呢?如果它的重边连接重儿子就不记录了,不然再记录。

这样的点每次只会增加 \log n 个。

于是再打一棵均摊线段树即可。

代码大概是 \text{5kb},想想都怕。

调了 +\infty 小时终于调出来了(

然而代码被卡常了,95分。

T2

F**k(文明靠大家)。

考场上想到正解,需要用到行列式,但是因为懒,于是去copy了一个,然而这个板子锅掉了……

我也不是不会打,我打过几次了,但那时我就是懒得打……

我copy的板子来自我的矩阵树定理,那题交换行列判错了,但是因为数据的特殊性过掉了!?

题解&如何猜中结论:点我。

本人于2021.7.25日学会LGV引理(

T3

题面有点歧义。

“可能会经过多少城市”应该改为“有多少城市可能会被经过”更好些。

我感觉这次考试一大失误就是放弃 T3。

如果加上 T3 那点暴力分我就200+了。

对于第一档部分分,随便暴力一下。

第二档我们同样可以先暴力连边,然后缩点,随后拓扑什么的随便搞一搞即可。

对于第三档部分分,不难发现这是一棵外向树,直接上LCA再特判一下即可。

对于第四档部分分,我们考虑到会额外加1条边,如果形成了环,那么走环,如果原先不能到终点但是走了这条边就可以到终点那就走,然后也没了。

对于第五档部分分,思路跟第四档一样,只不过讨论的更多一点。

哎,这56分也不少了……

预估得分:80+100+0

实际得分:95+70+0

DAY2

又出了点奇怪的问题,比赛推迟半小时。

我只想这么评价:DAY1让自己充满的希望,DAY2让自己充满的了失望。

T1

我想揍自己一顿。

这是之前做过的一道题,基本一样。

当时我不想改这一题,听的时候也没太仔细的听。

于是拿了20分溜了……

顺便加了一个random_shuffle,看RP咯。

正解:利用抽屉原理,每16位分一个块,那么和答案相差不超过 k 就一定存在一个块和答案相同,于是用bitset瞎搞一下就可以了。

由于数据随机,所以很简单,期望是 O(n^2),常数大概是几百分之一,这题还是随便过的。

不过我是在考试最后几分钟

T2

重大发现:执行\text{Flip 1 n}的结果会让答案取倒数。

然后……没了。

打了35分溜了。

不过看到区间翻转什么的,自然而然还是会想到splay。

听说正解就是splay维护矩阵乘法。

T3

没动。

看到题目觉得不是一道正常题,于是过了。

预估得分:20+35+0=55

实际得分:28+35+0=63

没想到T1还真的出了点效果。

水到了28分。

总分

### 失分点: 1. 两天的T3都没有做,应该努力去打一下暴力之类的 2. Day1 T2 行列式挂了(当然我相信考场上我不会挂) 3. Day2 T1 是之前做过的一道题(然而当时我大意了)