BJOI 2022 心迹

一拖再拖的省选,终日孤独的训练,不敢回看的文化课,一切都似乎进入死局。

记得去年 NOI 结束后,我对自己的定位是:回来好好学文化课,OI 争取进 A 队,拿 Au。如果再拿一年 Ag,还不如把机会让给别人呢。

可惜我一件都没能做到,noip 排名是去年两倍,还为了进省队担忧。

停课了一个月,感觉 oi 水平还是起起落落,大摇大摆,文化课则是一个月没接触过了。

这段时间的训练模式大概是每天自己找模拟赛 vp 打,包括但不限于:

  • CTT 2021 Day 1 \(\sim\) 4
  • CTS Day 2 (Day 1 题不全当杂题,然后一点不会做)
  • JSOI 2019 Day 2
  • 九省联考 2018 Day 2
  • IOI 2020
  • IOI 2019 Day 1
  • dmoj 月赛
  • Google Code Jam
  • Codechef Cookoff Lunchtime
  • Codeforces Round
  • JOISC 2021 Day 1 \(\sim\) 4
  • ZR 十连测
  • USACO pt 月赛 + Open
  • SDOI 2019 Day 2
  • 联考
  • UNR \(1 \sim 3\) 全部打完!
  • COCI
  • UER
  • ICPC World Final 2020

可惜了,其中大多比赛本身就是 IOI 赛制,我也就当 IOI 赛制,这种赛制 vp 的时候很舒服。
然而感觉 OI 赛制并不是那么好模拟的,需要大样例和对拍,平时训练很忽视这个东西,尝尝忍不住说自己就交一次就算最终成绩。

感觉大多 IOI 赛制打的都还不错。OI 赛制则是崩一场趣味一场,感觉训练不是很到位。

省选还搁着延期,还得期中考试,我不玩了,直接回去上课了。

其实我的局面还好,还有至少 1.5 年的高考和 4 月的 NOI。

清明又摸了 3 天,感觉不能这样了啊。

省选随缘吧。纯图一乐。

阁楼房间的角落里,你独自描画着地图,怀抱着刻下终结的中标,坚信着唯一的门扉。

考前注意:

  • sublime new system: gnome-terminal -x bash -c ‘g++ $file_name -o $file_base_name && ./$file_base_name && exec bash’
  • 计算空间 ;ulimit -s / -v KB
  • 对拍 / 极限数据;

Day -14

上文化课。

Day -3

写了 loj 拉格朗日插值板子。

Day 0

中午来机房打板子,没写拉格朗日插值。

五点跑步,不到一圈岔气。

晚上 xtq 跟同学去吃饭,我一个就回家了。

七点很困,准备睡觉,心态在一种微妙的平衡之间。

十一点还没睡着。

不懂。

Day 1

4:30 醒了。

摆到六点半,出门。

七点四十五,到考场。

肚子疼,但不让进,在外面排队。

进考场,忍着写完了板子。

去厕所,回来开始了。

看题。

A 题进行一个模拟。

B 题差不多那意思。

C 题什么东西。

先花了 30min 进行一个 A 的写,给的样例最大 <= 8,而且没有对拍方式,心说之后一定要检验一下。

想 b,想一半发现看错题的,nmd,remake!看懂新题后,因为做过机器人,10min 会了 \(O(n^3)\),开始写。

写到 10:00,自己 gen 的数据 \(4.9s\)。卡常。

卡了 1h。

变成 \(1.5s\)。写了 t2 的 gen 进行一个拍。

突然发现 t1 可能会访问 \(1000 * 100 * 100\) 状物,然后先离散化成编号写的,复杂度就是 \(O(10^7)\)

把这俩拍,写了个 a 的根,特别弱,,然后也不想造强的,摆烂。

C 题,瞪了 40min 毫无收获,不知道 flow 对不对啊,感觉会单向构造。

还剩 40min。

赶快写 flow,过了前三个样例,第四个没过。

方案突然不会构造了。

还有 10min,干啥?

突然不想摆烂,开始冲 8 分。

到 12:58 写完调完了,樂。

期望 \((0 \sim 100) + (0 \sim 100) + (0 \sim 24(?+12))\)

浮动极大,希望人没事。

感觉 B 就是因为常数太大了导致浪费太多时间,不过整体没崩(到目前为止。

下午、晚上狂摸鱼。

晚上手脚冰冷,不知为何。

11.30 入睡。

Day 2

5:00 醒。

直接起来了。

七点四十五,特别困。

到考场,特别困。

开局把三个题都看了一遍,感觉很没理解,A 感觉就是寿司晚宴的那个质数根号分治分组技巧优化显著,然后容斥一下就行了?本来觉得要写 FMT ,后来发现不是瓶颈,直接 for 了,差不多总共 2e8,想起 8e8 2s,直接写了。

自测极限数据 0.8s,呵呵。

拍完,过了50min。

B、C 看了,感觉 B 更可做。

想了 1h,还是只会 y = 1, x = 0 的贪心,只有区区 30 多分。(事实上好像能过 \(x = y = 1\),但是没测大样例,呵呵)

写了个基于括号序列的状态压缩有限队列,过不去 n = 8,这就是我,assert 猜的结论根本不对。

无奈开始拼 30 多分,对拍的时候死机了两次,浪费 20min。

还剩 1h,开 C。编了 20min 发现可以 DP,然后感觉特别阴间,有六种 case。

先写好写的 \(n^4\),冲了半天,发现根本过不了拍。到还剩 6min 的时候过拍了,呵呵。

只有区区 28 分。跟 12 分 \(m!\) 五五开。

总共 \((75 \sim 100) + (24 \sim 36) + (0 \sim 28)\),呵呵了。

(upd:t1 好像很慢的样子,很容易 t。。

感觉 gap 太大,B 这种题,WC 这种题,liuzhangfeiabc 这个人,备赛的时候 xtq 和 AKEE 都让做 AGC 我没做,但是做了 IOI,但是训练仍不足,这种思维题虽然感觉 cnoi 只有 zhangyibin 一个人干这个,但他每次都干这个,,,,,,,,,,,,,,,,,,,,,,,,

总结

这次省选感觉分数和去年五五开,呵呵。

对于比较套路的 D1T2、D2T1,可以较快得出做法。并且由于赛前训练 ds 过多,写的也挺快,只是因为卡常浪费 1h。

对于逆向区分的 D1T1,幸运的没有挂分。

对于有思维难度的 D1T3、D2T2,自己毫无头绪,一开始方向不太对劲,到最后也没拉回来。

对于 D2T3,以为是不可做题,直到剩下 50min 才发现可以 dp,还好拍过了 \(n^4\),只可惜只多了十几分,感觉分数分配非常不合理。


出分了:\(100 + 100 + 22 + 100 + 36 + 28 = 386\)

这个成绩,比上不足比下有余,zjx 和 xtq 无论如何都是无法超越的高度。

D1T2 浪费时间的原因,其实是插值 \(n+3\) 个点就够,我写了 \(2n + 1\)。。没算好,感觉不如直接暴力多项式乘法,但是感觉等幂和和插值五五开,不懂。

D1T3 数组开小了,开对后可以 34,大概可以获得所有 A + B 的数量分,不过挂 12 分在接受范围内。以后避免,部分分尽量还是造极限数据验证,这样至少不会 re。

D2T1 幸运的没有爆零,感觉还是在刀尖上走了一回。以后本机 rand 的就里时限差很近,一定要卡一下。

这场每道题基本都有了足够的思考时间以及做题时间,分配的较为合理。

唯一的例外是 D2T3,因为误判 D2T2 以及 D2T3 难度,导致 T2 花太多时间,导致 T3 不够,\(n^4\) 改成 \(n^3\) 很容易,然而我常数太大,,,现场开 \(500^3\) 会卡电脑 1min,所以可能还是拿不到这分,我也认了???

D2T2 AGC 类思维题需要训练,省选前以为 yyl 不喜欢这个,现在看来是给啥都要。

同时做剩下三道题的时候,明显感到力不从心,想不清楚细节,自己构造、思维题太弱早就知道,可是去年 NOI21 我连套路题都做不出来,很失望,所以 vp CTT 和 CTS。思维的锻炼感觉 CF 不够,不如 AGC,AGC 不如 IOI,要不板刷 IOI 吧!!!


民间榜有了,大概是 rk 3,75 标准分?差 rk2 zjx 20标准分,拉 rk 4 wzj 8标准分。只看省选,全国排名大概是 10 左右?
大概应该就是这样的排名了,变化不大?

感觉还是挺震撼,noip 后觉得完蛋了,但其实还好?加上有 400 外星人缩短人类水平差距,就相差不多了,占比也不多。事实上,我noip在 204~ 480 400 这个区间,总排名都不会变。

不过感觉这个 gap 真大,noip 落双外星人 12 标准分,这次因为 d1t3 的数组开小,d2t2 的不会做(重点),d2t3 的分配时间少,落了摆烂的 xtq 100,zjx 60。不过他俩是全国rk1、2 感觉很恐怖d(ŐдŐ๑)

算了下自己在 JS、SC、GD、CQ 的标准分,好像分别获得 rk 4、2、3、4 的好成绩?并且标准分没拉胯成这样,85 左右?
好像可以做 HN、HE 等队长?

感觉还是非常开心,之前一直觉得 A 队遥不可及,在高二 noip rk16 后更是感觉此生无缘,没想到我也可以做到啊。

感觉还是因为这次区分题不太需要动脑子,而且挂分的人多?应该多思维训练啊。


毛估估了一下,如果宿舍和去年分配的一样:

  • 和 dengyaotriangle、wzj 成为室友的概率是 \(2/3\)
  • 和 xtq、crabby 成为室友的概率是 \(1/3\)

很趣味。

upd:呜呜 crabby 不是第五了,好像变成了十一神秘厉害人


(暂定)之后的训练计划:

  • IOI 往年题。
  • Public OJ VP
  • AGC、CF Div.1、UOJ 补题、泛做。
  • vp 各地省选题。(ZJOI、LNOI......)
  • ACM OpenCup(?)

哎,等等,是不是缺少了点什么 CNOI 特色!!!


部分题解 / 补题:

D1T1

模拟。递归节点数可能是 \(1000 * 100 * 100\),那只要把每个字符串编一个号,\(O(1)\) 递归就行了。

code

D1T2

考虑枚举最小值,按现在值分成的区间分成 \(O(n)\) 段,每段答案是多项式,前缀和后插值就行。

code

D1T3

赛时我想法是对的啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

不用欧拉回路的!!!!!!!!!!!!!!

考虑先解决 C 部分分。

先做这样一个匹配。

左边是出度(或者表示上面),右边入度(下面),两者有边当且仅当能带来 1 的贡献。

答案就是最大匹配数,建图可以建虚电优化成 2n 点,4m 边。

考虑任意构造一组方案,此时是若干链和环,考虑把环相当于是都是同向,那么任意一个地方断开,然后嵌入学术社区(一定在链上)的那个位置,肯定可以做到的,于是完成了构造。

考虑有双向匹配,先给匹配了肯定更优,考虑比如 AB 匹配,最终是 Ax,yB。变成AB,yx 那一定不劣?

所以就做完了。挺难写的。

然后注意建图要建好一点,我一开始是 5m 边,2n + 2m 点,直接 t 了。。。。。。。。。。。。。。。。。。。

code

D2T1

对值域根号分治,按大于根号的质数对质数分组。每次钦定一个质数集合容斥,就是选的数一个都不能是有这个质数集合里的,那么枚举小的质数集合,每个大的是一个数乘起来。预处理每个大组钦定小组一个集合的贡献,就做完了。\(2^{14} \sum c\)

code

D2T2

考虑变成括号树!!每次找一个往下推一层!!!

然后考虑从低往高考虑肯定不亏!!!!因为你考虑往下都推了,有帮助!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!我考场就 sb 没想到。

x = 0, y = 1

每次往下推是自己的权值!!!那么每次保留最大的权值不往下推就好了!!!!!!!!!!!!!!!!!!!1

x = 1, y = 1

往下推是自己权值,再加上现在还在这层的随便选一个,

考虑这层现在有 \(t\),考虑钦定推下去的 \(t - 1\) 个,前 \(t - 2\) 个都可以靠着最小值推,然后最后一个可以靠着最小值推。那么所以每次推权值都是一个加上最小值,并且你可以把最大的留下,当前贡献和对之后的贡献都是优秀的!!!!!!!!!!!!所以贪心就好啦!!

x = 1, y = 1

\(t_i\) 为第 \(i\) 层需要往下推的个数,这个对于所有过程都是一样的!!!!!!1

考虑 t 长这样:1 1 1 2 2 2 2 3 3 4 4 ... 5 4 3 2 1

这时候每次往下推的权值是 \(t_i \times mn + b_i\)

\(b_i\) 是留下的权值,\(mn\) 是这层最小的权值!!!

你整体的看,这个 \(\sum b\) 相当于是所有权值 - 最后一层的权值!!!!!!!!

所以你要让最后一层权值尽量大,然后推下去的尽量小,,

然后考虑如果 \(t_i\) 大于等于 \(3\) 那你留下次大值一定不亏哒!!!!!!!

只有 \(t_i\) 等于 \(2\) 的那个连续段有问题,后面的 \(3 2 1\) 没有问题,\(2\) 的时候你留下最小值,肯定对的!!

考虑那个 \(2\) 连续段,就是你要选一个扔下去。考虑之后的过程都是贪心,设扔下去的这个值为 \(x\),考虑任意一种方案,答案都可以表示为关于 \(x\) 的一次函数,那么这时候想要最优 x 要么最大值最小值,所以扔下去的一定是 \(2\) 连续段中的最大或者最小,分别做一下就做完了!!!!!!!!!!!1

考试主要想不到的是从小往大推,和这个 - 最后一层权值,说明我们需要整体看!!!!!!!!!!!。

code

D2T3

我考场因为没剩多少时间了。

这个题和树上的数十分类似,我一开始思路就是确定一个点出度边的顺序,那么谁去谁的确定了,然后捣鼓半天发现需要分别记录向上向下传播的距离才能 dp,然后就状态 \(O(n ^ 3)\),就寄了,顶天 64。

然后正解其实和这个状态设计差不多,但就是优秀,就是什么呢?他记录的是一个考虑 u 子树的边,然后 u 谁从父亲边上去了,一个人从父亲边下来去了哪里(距离或点编号都行)。

相较于原先那个垃圾东西记得都是:最终去哪了,这里记得两个东西都是在子树内的,并且肯定分属两个不同子树或者是 u,这样空间就可以 \(O(n ^ 2)\) 了,为啥这么神奇?????

不懂啊,是不是你考虑 dp 的时候,合并的复杂度是对的,但是向子树外延展这个距离,就是不好把控的了。

然后 dp,七种情况分类讨论,感觉讨论清楚还是挺难的?我考场 对拍出错了 n 次,但讨论难度感觉和正解五五开啊,输飞了。。

code

upd:详细题解

posted @ 2022-04-05 21:20  DMoRanSky  阅读(1807)  评论(9编辑  收藏  举报