专栏文章
省选联考 2025 游记
生活·游记参与者 3已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhze0oym
- 此快照首次捕获于
- 2025/11/15 05:46 3 个月前
- 此快照最后确认于
- 2025/12/03 22:23 3 个月前
前情提要
NOIP 写了 变成 ,屈辱掉下队线。
省选前几天狂摆,在引诱,雀魂,学习【数据删除 1】和看【数据删除 2】之间反复横跳。
2025.2.28
下午面人,突然告诉我有 这个东西,然后相当于我 NOIP 上队线了?这么牛的。
进场打了把雀,和 cyx 通牌。我坚信牌运和 rp 是可以同时存在的!试机写了 ntt,然后看 tyx 和 lpl 讨论 query 就写了一下,写完过了前三个样例,第四个挂了,摆。
和 cyx 和 yrq 吃饭。吃完回家摆。晚上肚子有点不舒服,但是管他呢。又学了一会儿【数据删除 1】,但是没学进去啥。十一点十分睡觉。
2025.3.1
被七点的闹钟强制开机了,感觉状态会很差。
早饭 /ruo。
快进到进考场。座位号是 406-049。板子写了 read 和 qpow,然后发呆。八点二十发现了下发文件(显然需要密码),看了一下文件夹,猜测
graperm 是个构造(输入一如既往的大,但是输出也比较大,最后比输入还大),大概都是多测,然后 lucky 看着输出很少。样例这么少大概会是签吗?8:25:下发了密码。结束的时候背了一下,大概是 keeP*drEAm&iNg。大致看了一眼三个题意,原来 graperm 是这个意思啊?8:30:T1 怎么写完了。挂样例 2 红温中。8:40:终于调出来了。死因是中位数必须存在。简要题解:直接枚举中位数!某个 apio 启发我们中位数的判定和<=>的个数相关。容易发现等于的越多越好,所以包含中位数的区间一定是=,严格左边的肯定是<,严格右边的肯定是>。简单扫描线容易维护出三个对应的区间的和。注意到若<=>的个数是 ,合法条件是 。这相当于 要尽量接近 。如果 所在区间有交则肯定可以取到 ,否则可以取左边区间的右端点和右边区间的左端点 check 一下就可以了。需要离散化,时间复杂度 。
8:40 ~ 9:10:大概在 T2 和 T3 之间反复横跳了一下,都有不少收获。-
观察到 T2 需要注意时空限制。发现这个有向图可达性是不是不弱于 来着,还可以简单 。算一下空间发现大概 1 个 G,那是不是对完了。怎么是暴力题。
-
T2 感觉没啥头猪,可能可以分点小块,比如说按 分块,预处理每块的每个 msk 的 ,复杂度是 ,空间也很卡。好像没啥前途。
-
T3 感觉嗯做啊,看上去部分分很诱人很丰富。这个树可能不难,森林估计也就嗯推一下,然后取个生成树做一下估计也不难。待会儿嗯想一下。
-
考虑 T2 如果边都是 怎么做,似乎相当于动态二维数点,所以看上去 polylog 死路一条。不如接着想暴力。
然后抉择了一下还是决定全力 T2。然后突然发现了一下这个 A 的带修好像比较容易。目标是求出对于一个 ,所有 对应下标的 bitset。似乎可以直接分块维护,设块长 ,暴力维护每个 的 对应的 bitset,修改的时候只要改 次,然后查询的时候 跳每个散块,差分就可以得到 对应的 bitset 了。然后和可达性对应的 bitset 与起来,然后 的修改就对完了!这一看就正解相关啊, 的管他呢,写了再说。
大概在
9:50 到 10:10 间写完,手写了 bitset,感觉不太难写。写完可达性测了一遍样例,跑一秒左右,感觉还行。最后加入了暴力跳 next 找 ,调了一调就过了样例,最后一个样例仅仅跑了 8s!然后想了一会儿咋修改 。想了半天还是只会二分,而且二分的内容看上去也难以维护,否则这个 说不定值得尝试一下。欸但是这个 的带修能不能仿照一下 的带修,分分块,然后根据 WC 文艺汇演的相声:
找一个数在有序序列中的出现位置的时候,先分块!二分它在哪个块里,然后在块里二分!就做到了 !
可以想到直接二分它在哪个块里(因为只维护了整块信息,查询还方便),然后暴力查询块内,这样完美平衡了一下单点查询的 和整块前缀查询的 !
写一下。调了好久才过样例,之间一直在 sample 3 爆 RE,查了 年才发现数组开小了。然后测速,样例 7 跑 7s?是不是要卡一下常数了。然后找瓶颈,在 wa 的时候就调了一下块长,直接令 ,发现速度不慢,瓶颈竟然不是二分了?是暴力跳??输出了一下暴力跳的总次数,发现爆了,再仔细一看发现二分写了个
if(f=1)res=mid,r=mid-1???改掉之后样例 7 跑了高贵的 2.3s。直接通过??然后加了个文件,对着原版代码重新测了一遍样例。中途写了两个相邻的编译命令:
g++ 1.cpp -o 1 -O2 -std=c++14 -fsanitize=undefined -fsanitize=address -Wall -Wextra,g++ 1.cpp -o -O2 -static -std=c++14。细心的同学已经可以发现问题了,我的样例 7 此时跑到了 11s!然后发现了,还是高贵的 3s 以内。这个时候是 10:36。简要题解全在上面了。然后做一下 T3。说服自己先把全排列写了。时间复杂度看上去有点大,可能是 。然后想了一下发现第一项大概固定是 ,然后排列的排名估计不大,反正最多是 。样例过了就是过了!。
想了一会儿树发现没什么头猪。想了一个依次把数填进去,没想清楚就乱写了一下,发现完全不对。然后摆了,准备看一下链。第一个样例竟然很良心地是 在端点。猜了一手只能按顺序,全错了。然后直接在
.in 里手动 dfs,发现是从头开始,在前面或者后面放。这个直接倒着做然后贪心就做完了。 不是端点的话,似乎两个部分只能嗯拼起来啊!取个小的就好了。飞速通过了,时间忘了。然后换了一些新奇的想法做树。一直在想到底可不可以拿 当根然后每个子树都是区间。然后想了一下别的点似乎也能当根啊?又想了一下似乎固定根之后可以直接嗯贪心啊?这个没什么细节的样子。写了一个枚举根然后贪心。
具体地,遍历一棵子树的时候一定可以先填最小值。更具体地可以发现,可以按子树最小值排序(不妨把根也当作一个点),然后依次遍历,遍历到根相当于输出根。
肉眼过了但是 diff 出锅了,难过。改了好久行末空格然后 diff 过了?还不错。
然后在纸上画了棵大树手玩根的情况,然后发现最优过程似乎相当于直接拿 当根模拟。于是直接令 为根就通过了?试了一下还真的通过了??这时是
11:32,T3 得分是 。然后推了一下森林,花了好久让自己相信一个树只能完整地塞到两个子树中间。上面都把根扔进去排序了,不妨把所有不同子树的最小编号点都扔到 queue 里,每次一直考虑队首,如果比下一个选择优就直接插入这整棵树!很好写,一遍过了样例。这个时候是
11:42,T3 得分 。10 分钟得 20 分?然后在草稿纸上想返祖边和横叉边。返祖边似乎比较容易,限制可能是除了第一个点,下面的必须都挂在最左边或者都在最右边。横叉边呢?这么难?lca 处似乎可以放最两边,或者根的同侧相邻。然后呢?和这两边的相对位置有关。
还是稍微写一下吧。欸那些非树边是哪来的来着。咋是 dfs 树啊?原来没有横叉边啊???
然后仔细想返祖边,发现似乎忽略了两条返祖边交叉的情况。用暴力玩了好久发现似乎如果有相交的情况就无解了,所以大概可以大胆实现。又想了一亿年细节,写了一半终于写不下去了。不管了, 就 。
然后去检查了一下文件,阅读了 pdf 发现 T1 的大样例咋全是特殊性质啊?再仔细一看好像问题不大。
然后交卷了。签字好慢。
出来问到了 tyx 240,yrq 208,cyx 128,pmd ???gqh 196,chw 212,qzx 260……
吃完饭回来发现传说江苏只有 pmd 会 T3? 260 是标准分?我成 A 队线了?仔细想了一下发现进 A 反正是不可能的事情,进 B 只要不像去年一样大翻车就还挺有希望。
T2 没人和我一个做法啊?
晚上学了一下 T3,大概是考虑这个平面图大概可以看成若干个环的并,两个环最多交一条边,然后差不多就很可做了。不管了,谁能有 pmd 的脑子啊?
晚上睡前又强制【数据删除 1】了一会儿,然后不知道为啥很久没睡着。
2025.3.2
快进到进考场。没啥信心。
密码是
ReM#Ain(LoVinG。问就是最后几分钟没事干就背密码。T1 看着超级难。不会。瞄了一眼 T2,惊讶地发现数据范围咋又是 。咋还有 个多测啊?这也太难了。T3 还是不太敢想象。
嗯想 T1。发现了一点 和题目等价。发现了每个点管的区间递增。发现了每个点对其它点的影响很小。发现了可以只考虑特殊时刻的总距离。发现了贡献的特殊计算方式(只考虑每个点到后面一个特殊点之间的点被它影响)。这个好像对完了,直接嗯维护一下是不是做完了。好像想了好久好久。
写写写,调了一万年样例,好像直接做到了 啊!样例好强,还总是有 的小样例给我调!挂了许多例如贡献算一半就不算了之类的小地方。过样例是
9:11。然后看范围巨大无比就想改一改,尝试线性。把
set 换成单调栈就只剩排序了。那就是高贵的排序之外线性,很好啊!复制 遍 的大样例,跑了 0.2s。这时候是 9:25。然后觉得样例太少了,写了个暴力模拟的代码,又调了一万年样例,又挂了写稀奇古怪的地方。然后过拍了。这时候是
9:37。我到这时还没有发现这个模拟的过程可以直接线段树加速!!!甚至在写暴力前没有发现可以直接模拟。
然后觉得慢慢写暴力进队应该稳了,就一档一档写 T2。慢吞吞地写了半个小时过了 ,然后看了一眼 C 性质。仔细推了一会儿发现这个缩点之后可能很好看,然后缩点正好是主旋律,很好玩啊!先把主旋律写了。
不知道过了多久写过了主旋律部分。浪费很久时间的是计算 的三元环的答案手算错了以为代码假了。
然后接着推。没有发现任何度数相关的充要条件。我仍然在 dag 容斥! 表示 内的点已经组成了一个符合条件的 dag,然后往后面拼接一些没有出度的 SCC,要求到 都有边,然后再拼上一个 。然后这个系数比较难绷,一个 SCC 连边的方案数是 ,因为要确保连通。我不太敢想容斥这个,然后直接想了拆括号。选一部分令它贡献是 ,剩下的贡献是 。然后把 部分的东西先并在一起,然后再算 就可以算贡献了。转移先枚举 ,再枚举贡献是 的部分,再枚举 的部分,做到 。调了一万年才过样例。
然后想的时候就大概意识到这个部分可以 subset convolution 了,然后我正好不会,然后新开了一个 cpp 开始现编。先编 or 卷积,运气很好一遍就编对了!其实这个东西我至少半年没碰过了,但是之前 CTT 背 ntt 的时候想起来似乎 ntt 和 fwt 长得一模一样,对着 ntt 编了一下,猜了一下系数,然后就一下编对了。然后回忆了一下改成子集卷积,调了好久 RE 之后也编对了!然后拼到代码里又拼了一万年,因为少写了一个 。但是样例过了 和 过不去 ,想了一万年发现 的幂只意识流地预处理到 (实际上不需要预处理这个,但我蠢就蠢吧),随便改成 就过了。时间复杂度 。
卡了一下 fwt 的常数,结果 五组要跑八秒,简直没救了。似乎我的 也有这个分啊?那我编了个啥?
然后就决心嗯做 T3 了。写搜子的时候没打算认真写,写了 后来想想 yyc 因此多过了一车分非常非常后悔啊啊啊。 然后看到 AB 性质主观感觉性质很强,不应该很难啊?然后用暴力和 来一步一步修我的意识流猜测,最后 过了样例。中途还挂过 ,拜谢强样例。
set<vector<int>> 跑路。想过把序列哈希起来但是有点懒得写。然后编了一会儿状压,感觉状压没啥用,最后编不下去了,遂彻底放弃。这时候还剩十几分钟,查了几下文件,测了几遍样例就开摆了。一直默念着 172 其实也还行也还行也还行但是出来还是发现爆了。T2 少了那个 20 分真的挺痛的/ll
最后在猜标准分。猜了一手 。结果是 ???这也能中。
站起来首先发现了 chw 的 152,然后 pmd 给我展示了一行草稿纸上的“我是 T3 战神!”,然后发现他是 ,遂破防。吊打标准分啊!算了一下发现只算 T3 落后 pak 一整个 分。这谁打得过他啊?
反正不管怎么挂基本上都进队了吧。
熨斗 D1T3 挂了 20。埃及吧过不过。
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...