校内ACM比赛总结

不知道该叫什么名字就叫CDQZPC吧

前言

本来是三个人组队, 但是临时给我们拆成了两个人。 题目是学长出的。

A

smb学长出的题, 暂时不会

B

是一道猫树分治的题, 通过这个题我思考了很多, 我想了很多的做法, 但是在时间上都差一点点, 基本上卡在 \(1e9\) 的规模, 然后就想到了猫树分治, 但是鉴于对于猫树分治不够熟练和赛时的机房分贝过大, 自己的脑子过载, 我没有发现最后询问只需要 \(O(V)\) 合并背包, 这真的是很可惜, 只要我当时稍微清醒一点, 不可能反应不过来, 不过毕竟猫树分治第一次用。 另外的收获就是我的数据结构的思维路径和框架搭起来了, 解决一道题我可以有多种手段, 这种思考方式很奇妙, 就不是那种靠反应和猜算法去套的那种想题的方法。

C

这是一道模拟题, 模拟即可。

D

这是一道最小割的题目, 以前做过, 很快写出来, 但是调了有一会, 可能有半个小时, 这就很不好, 因为错误的地方很唐氏, 我真的服了。 不过还是成功拿到了首A。

E

很明显是一道DP题, 有点小复杂, 考试时先放了, 想先等等在做, 等其他题差不多了再来做这个, 但是最终还是没等到那个时候。

F

很ez, 队友切了, 我没怎么看。

G

这道题是本场第二可惜的题目, 第一可惜的是 B, 这个数据结构题我不该没做出来, 我回避了树套树, 因为我觉得这种比赛不会出这种码量大的题目, 所以我没有往树套树细想, 但实际上赛后往树套树细想时发现, 这个树套树是线段树套set, 代码量和普通线段树无异, 这就很幽默, 这是我的定势思维把我给框住了, 这种思考有时候确实有用, 也很必要, 但是我不该把自己框死, 应该更多的根据题目本身去思考, 这题真不该。

H

这道题是求最大团, 考虑连状压都做不了, 除非有高级玩意, 不然什么见到过比状压还牛的东西, 状压你都做不了那可能是真做不了(这当然不绝对正确, 但是还是有参考意义, 引导我们往搜索思考), 我记得之前有一道题, 理论暴搜是搜不出来的, 但是通过剪枝和分析, 我们可以通过, 所以这道题我就思考搜索。 考虑写是搜索压力比较大, 我们可以尝试构造更高级的乱搞做法, 比如随机化, 模拟退火, 最开始我们尝试随机撒点再 \(O(n^2)\) 判断, 取得了 10pts 的好成绩, 我们思考原因, 是因为我们太随机了, 如果我们加一点人类智慧, 那么绝对可以提升大量效率, 所以我贪心的, 优先取度数大的点加入团, 加到不能加为止, 我们可以发现这样子贪心出来的答案是和真实答案相差不远的, 那么我们就可以考虑微调, 随机 \(swap\), 那么这个是什么, 不就是模拟退火吗, 我们之前写模拟退火不就是随机swap再calc, 那么我们就当成板子写就好了。

I

队友切了, 式子推到一半, 推不动了, 靠我来优化, 我通过打表光速推出递推式, 发现我真是太聪明了

J

这是一道简单题, 发现可以二分加主席树, 十分的简单, 并且码的也很快, 开始到通过可能就是10min+, 赛后值得再理解的是我没有用好线段树的分治结构, 实际上线段树天生的分支结构可以支持他边查询边二分, 我发现线段树是真的强, 又有严格 \(logn\) 的树高, 还自带分治结构, 还只有 \(O(n)\) 空间, 而且好写, 可以灵活变换, 很值得更深入的理解。

K

这道题又是我领悟到考场真理, 就是觉得屎的代码千万别打, 如果觉得自己的思路很冗杂很麻烦, 千万不要冒险去写代码, 不然就会被带进沟里, 最开始这道题我们想的是dfs, 但是设想起来发现很难写, 很多分讨, 本来是我写的, 但是我觉得屎, 就没写, 交给队友, 和队友再三讨论, 没有什么改进, 没办法, 队友开始谨慎的实现代码, 等我上完厕所回来, 队友就发现这题根本没必要暴搜!因为管子密不透风, 我们只需要枚举每个格子, 找到哪里是缺管子的即可。 如果我们直接开始莽dfs, 那么后果不堪设想!!!想象那将会面对屎山的代码, 并且很可能会锅, 简直就是无底洞。

all

得分: C + D + F + H + I + J + K = 7 rk2(还有个队七分但是比我们快4分钟, 但是我不管

表现中规中矩, 还是有遗憾, 就是 B 和 G, G 是不该没做出来, B 是太可惜了。 主要原因可能是考场状态, 因为实在是吵。 考到后面确实是有点糊涂。

不过还是比较满意, 没有像上次参加真比赛那样耻辱了...

posted @ 2024-07-30 20:42  qqrj  阅读(7)  评论(0编辑  收藏  举报