0%

CSP-S 2023 题解

CSP-S 2023 题解

300 才算正常,小于 200 的都是重度弱智,小于 150 的都是智商为 -2147483648 的单细胞生物都比不过的东西。

上面这句话只针对我自己。

lock

究极弱智题。

枚举所有的 种密码,跑一次看是否能通过题面中描述的变换变成给定的那些状态即可。

谁需要代码我笑它两年半。

game

比较弱智题。

考虑维护一个栈,依次把 内的字符加进去,如果和栈顶相同则把栈顶弹出否则把自己压进去。

一个子串可以被消除当且仅当它是一个偶回文串或若干个偶回文串的拼接嵌套,而处理一个这样的串后一定会变成空栈,那么放到整个串上就是如果 能被消除,那么处理 后的栈和 的栈应当一致。

考虑维护栈中的前缀哈希值,然后再用一个 std::unordered_map 维护已经出现过的哈希值。容易发现哈希值是可以 转移的,因此每次直接去 unordered_map 里面查这个哈希值出现的次数加到答案里就好了。

时间复杂度

code

struct

大模拟不分析。

最好就当作一个结构体和四个分开的函数五个模块分开写然后再合起来。开一个 root 结构体方便管理所有结构体。多用 STL。

有趣的事实:pokefunc 曾经认为对齐能高达

code with detailed English comments

Large simulations are not analyzed.

It is best to write the five modules as one structure and four separate functions separately and then put them together. Open a root structure to facilitate management of all structures. Use STL more.

Fun fact: pokefunc once thought alignment could be as high as .

代码含详细洋屁注释

tree

非常弱智题。

二分答案,问题转化为能不能在每棵树的 deadline 之前把它种上,deadline 稍微分讨一下就能用二分求。“容易发现”肯定是每次选时间最紧迫的点去把它贪走,然后就直接排个序就完了。

至于为啥是“容易发现”这你就要问 pokefunc 了。

code