NOIP 模拟 6

T1 新的阶乘(factorial)

线性筛出质数和每个数的最小质因数,然后直接算即可。

T2 博弈树(tree)

结论:当且仅当起点为直径中心时,后手必胜。
证明:先考虑只在直径上的博弈,如果起点在直径的一端,先手必胜,设直径长为 \(len\),如果在端点的下一个位置,先手可以移动 \(len-2\) 到对称位置,此时后手只能移动到直径端点,先手必胜。考虑再下一个位置,先手还是先移动到对称位置,后手无论怎样移动,都是先手的必胜点。当且仅当起点为中心时,先手无法移动至必败点,此时先手必败。
因为直径是树的最长链,其他节点相当于直径上的点的复制点,所以整个树的博弈可以归纳到直径上。
然后对于直径长度的奇偶性简单分讨一下即可。

T3 划分(divide)

简单观察发现答案是只留一个极长段,剩下每段长度为一。
简单分几种情况:

  • 我会特判!全是 0,直接输出 0 和方案数即可。
  • 我还会一个特判!段数等于长度是只有一种方案,贡献是 1 的个数。
  • 我是特判大师!没有一个开头为 1 的段满足长度,所以直接找第一个 1 即可,方案数插板求得。

都想到最后一个特判了,不难想到对于一般情况就是找出极大段的数量,我会滑动窗口,但是这题要求取模,不能直接比较大小。一个经典的东西是两个数比较大小是,一定是比较第一个两个数不同的位置,所以可以二分加哈希找出这个位置。
对于最后一位,无论是什么,都无所谓,因为它的贡献在段内也是 \(1\),在段外也是 \(1\),所以只用比 \(len-1\) 的长度段即可。
哈希什么不确定算法,我会最小表示法,找到最大之后 KMP 即可,轻松爆标,笑点解析:没有哈希 + 二分跑得快😅️😅️。

T4 灯笼(lantern)

黑色的纯区间 DP,以后再说。

总结

这场挂麻了,T1 直接 std::vector 存质因数分解,空间炸了 40pts,T2,T3 被卡 corner case 和哈希,最大败笔是 T4 暴力都不会,打成了退役分数,但是笑点解析就是:打得还是比 CSP 高😭️😭️。

posted @ 2024-11-07 17:29  Ishar-zdl  阅读(59)  评论(4)    收藏  举报