CSP 集训总结
Day -5
这次比赛打得很难受,自己没有静下心来细致思考题目,而是忙于写暴力等。而想出正解的 T1 却没有尝试去写,而是放弃了,以为细节很多。考后 15min 就写出来了。自己一定要敢于思考敢于写题!
本场比赛较多位运算相关题目。
T1:给出两个数组,让他们两两配对异或得到的数组字典序最小。这题是比较套路的从高位往低位贪心,然后尽量让相同的匹配,剩下不同的再匹配。可以考虑建出两个 Trie,一起 dfs 。可惜考场的时候没敢写。
T2:一个无向有重边的图,每个点有点权,每一条边有一个 1~3 的颜色。每次询问给出起点,并必须选一个颜色,使得颜色与自选颜色相同的边无法经过。中途可以改变一次颜色,问经过点的最大点权和。
T3:考试时没有细想,其实这是很好拿分的一道题。考虑转化后题意会变成一个类似 CF888G 的完全图,其点有点权,边权为两点的异或。求 MST 而且带修改。其实修改不是很难的操作,只需要倍增预处理一下。主要是建 MST 的过程。其实貌似是一个很熟悉的 Trick,类似T1,可以分治,从高位往低位考虑,这一位是 0 的数只可能往这一位是 1 的数连一条边,不然的话就会更劣。找边可以贪心再找下去。
T4:考虑转换限制变成异或高斯消元,处理一下。
Day -4
今天又垫底了。
看得出来今天的 T1 是一个构造题,T2 是一个树上问题, T3 是偏线性代数的计数题,T4 是一个计算几何。
一开始猜了一个 T4 结论写了一个 50 分,到现在没调出来,不知道是什么的问题。看了题解发现结论是对的,这就很奇怪了。
然后去磕 T1。事实证明这是一个比较错误的决定,因为T2 T3都是很容易拿分的题,我却去搞 T1 这种构造题,之后做比赛要小心构造题,以及数学题就算知道自己不可能会也要看看能不能打表写暴力这样的。
真的很失败啊。T3 最低部分分还是最后 Rush 出来的,丢了 1/3 这样子。。呜呜
能安慰自己的就是 T1 的操作基本都想出来了,就是没想到怎么处理连续相同的情况。。以及 T4 猜对了结论。。
破案了,T4 数据出错了。
T1:考虑先打通使得没有相邻的相同,然后想办法正反做一遍就行,不知道为啥就对了。
T2:这个比较有意思,准备马上去做。考虑一个询问可以如何处理。在 dfs 的时候处理新增的颜色和 disable 的点。
T3:转化题意,一个序列可以和一个方阵形成一个双射,对这个序列 dp,然后你发现可以矩阵快速幂,然后就没了。
T4:极角排序之后双指针搞下。
我再数组开小我就是傻逼!我就一个月不打游戏!
突然发现自己的代码开了O2跑巨快,不知道为啥。。已经拿到两题最优解了
Day -3
摸鱼。
Day -2
又垫底了。
开题,这个 T3 貌似是个傻逼题啊?是我看错了?T2 貌似也很愚蠢啊?这是普及组模拟?
40 分钟干完,开 T4 ,一开始以为自己会了,后来发现其实只会 60。
这时候已经很慌了,开 T1 发现自己也只会暴力,就随手写了 28 分。然后回去搞 T4,发现还是不会,就自闭了。
最后 T3 爆炸了。原来是一个恶心人的东西。T1 暴力也写炸了!!细节真的要注意。
比赛的时候一定要把所有细节全部写出来!自己要出数据!!不能过样例就不管了。
然后拿到 T3 最优解。
T1:是一个比较细节的 dp 题,需要细致的思维。
T2:状压 dp 板题。
T3:傻逼题。
T4:容斥设计状态 dp。已经在另一篇博客分析了。
Day -1
最后一套模拟赛,又垫底了。
看题,T1 貌似排序之后连续取啊?随便写了一手然后拍一拍发现没什么错,就过了。T2 是一个期望的 dp 题,我还以为自己能拿点分,写了一个考场上怎么都不知道哪里错了的 dp ,过不了样例,然后就自闭回去看 T3。发现 T3 可以直接 AC 自动机骗分,就随手写了一下。T4 先写了 16pts 暴力,然后最后 10min 发现自己还会 16 分!!然后写了!把前一个 16 覆盖掉了!呜呜呜。。
晚上复习了高斯消元、扩欧等。
Day 1
上午复习了网络流(zzj:怎么可能考网络流)(伏笔)、主席树、树链剖分。然后教练进来讲一些注意事项,走之前暗示我们可以使用计算机娱乐一小会。
然后大家就一起 gen,一起 Slay.one ,挺欢乐的。
进考场很紧张。等待的时候发现自己完全没有复习计数的基础知识,希望不会考卡特兰数什么的。解压密码输错了3次。开考。脑子一片混乱空白,强迫自己静下心来看题目,看完其实也没有理解多少。这个时候其实很慌了,因为发现没有傻逼题,不符合之前 CSP 的特征。
接着就很紧张,重新看了一下题目,没有什么特别好的思路,就采用自己的经验,强迫自己开 T1,手玩一下样例什么的。然后发现 T1 其实是送的。性质比较显然。貌似一个堆就好了。(伏笔)
去看 T2 ,发现是一个不太好些的 O(n^3) 计数,当时没有想到怎么 dp,也没有细想了, 因为去年 NOIP 就是因为一个计数题而爆炸的。决定先放下这道题。
然后发现 T3 又是一个很好玩的题。随便做了一下猜了一个结论。当时计划写完 T1 就来写 T3。
T4 看起来完全没有思路。\(O(k 2^{nm})\)的暴力做法怎么都拿不到分。于是就决定先放一下。
这时候已经三点半了。蚌埠住开始写题。写题的时候太紧张了脑子非常混乱,好多细节都有问题。真的需要锻炼自己的心态。
不过当时写+调 T1 就花了 40min 左右,终于过了两个小样例,但是大样例却!却没有过!输出 30,答案是 32。这个时候已经彻底崩了,对着代码看了好久都没有头绪。期间还写了 T3 暴力防止比赛爆零。直到 4 点 15 左右才意识到自己错在哪里,在之前已经上了 2 次厕所调整心态。实际上自己堆的做法是有点小问题的,不能保证编号最小,这样答案不优。重新冷静之后审视一个被我扔掉的线段树做法,它是对的,只不过可能需要些码量。当时毫不犹豫就开了,因为可能是最后的希望,背水一战!大概在 4:40 成功写完,随便处理了一些细节就过了大样例,当时真的有一种如获新生的感觉。
然后发现居然比赛时间是到 6 点半,自己一直以为是 6 点。于是又毫不犹豫开 T3 正解。期间其实想想写写还是花了不少时间处理细节。写完过小样例已经是 5 点 30 左右了,但是大样例却错得比较多。比较慌张,随便调了一下找到一个下标没有*2的小问题,此时还是没有过大样例。分析了一下,发现大样例只是某些 R 变成了 L,作出判断是细节问题而不是思路问题。于是对着 40 大小的数据分析了一下,思路没有问题,只是程序实现的问题。再次上厕所冷静。发现有时候 L 是不合法的,但我的程序是先找前半部分后处理出后半部分,就会导致难以判断某些移动在前半部分还是后半部分。(因为都合法,但是这样其他的就不合法。)于是加了一个方向。成功在 6 点过了大样例,当时差点叫出来,真的太不容易了。
剩下半个小时,我选择保守一点,检查 T1 T2的细节问题。发现 T2 有个地方数组开小了,心里有些后怕(差点就一个月不玩游戏了)。
然后传统艺能,放到 NOI linux 尝试编译,没有什么问题。
最后可能做了一个错误的决定,那就是我没有尝试把 T3 的暴力放到 T3 的正解里面,当时比较自信了,以为过大样例就没事了。(伏笔)
还剩 15min, 突然发现 T2 很简单啊?区间 dp 好像能做。不过没时间了,决定 Rush 一个 15 分暴力。结果比赛结束也没调出来。
赛后神仙:
我:您切了几道题啊?
高二神仙:差一点。
我:???
高二神仙:最后一题没写完。
然后被告知!T4 网络流直接最小割可以拿到至少 60 分!T2 确实是一个傻逼 dp 不过很多人没调出来。还是庆幸自己的决定。
晚上有人说 T1 是不凸的?我当时以为自己的结论有问题,结果是大家的做法什么二分三分我根本没想到过,雨我无瓜。
T3 做法貌似挺对的。
Day 2
GD 代码发出来了。随便去谷乱测一下发现自己 T1 过了, T3变成 WA 72 分。哼哼哼啊啊啊啊啊啊!!!
就是非常后悔。现在只能听天由命了。自己的分数在 [100,200] 之间徘徊了。但是不知道到底是哪个细节有问题。
要是我把暴力贴上去,至少心里会安心很多吧。。现在好了,又垫底了。
等分数吧。复习段考去了。