20241017 模拟赛(语言,色球,斐波,偶数)

看题戳这里

总结

时间分配:30min自习,30min t1,然后在t2,t3,t4中间反复横跳,最后一小时狂冲t3没出来,悲伤。
后来听巨佬说t3很离谱,也不知道是不是真的。

最终分数:0+50+0+0
为什么第一题挂了?为什么第一题挂了?为什么第一题挂了?为什么第一题挂了?
哦,原来是玩原神freopen注释了导致的。

解析

A. 语言

难度:橙
注意到动词只有一个,在这上面搞一搞就可以了。
本人代码能力极差,轻喷。

B. 色球

难度:绿
链表的巧妙运用。
若无操作 3 用栈就可以解决。但这里操作 3 要求反转,所以可以用双向链表来实现。

C. 斐波

难度:紫-黑
首先,斐波那契数列的递推式是 \(f(n)=f(n-1)+f(n-2)\)
\(g(n)=f^2(n)\),则 \(g(n)=(f(n-1)+f(n-2))^2=g(n-1)+g(n-2)+2f(n-1)f(n-2)\)
又有 \(2f(n-1)f(n-2)\\ =2(f^2(n-2)+f(n-2)f(n-3))\\ =(f(n-2)+f(n-3))^2+f^2(n-2)-f^2(n-3)\\ =g(n-1)+g(n-2)-g(n-3)\)
所以推出 \(g(n)\) 的递推式:
\(g(n)=2g(n-1)+2g(n-2)-g(n-3)\)

转换成矩阵:

\[\left( \begin{gathered} g(n) \\ g(n-1) \\ g(n-2) \end{gathered} \right) = \left( \begin{gathered} 2 & 2 & -1\\ 1 & 0 & 0\\ 0 & 1 & 0 \end{gathered} \right) \left( \begin{gathered} g(n-1) \\ g(n-2) \\ g(n-3) \end{gathered} \right) \]

用向量表示即为:\(\overrightarrow{g_n}=A^n\overrightarrow{g_0}\)

而对于题目中的 \(f(S) = \sum\limits_{T \subseteq S} \left[\operatorname{fib}\left(\sum\limits_{s \in T}s\right)\right]^2\),我们也用向量表示:
\(\overrightarrow{f(S)}=\sum_{T\subseteq S}g\overrightarrow{\sum(T)} \\\)
$ f(S)$ 即为向量的第一项。

\(S\) 再加一个数 \(a\),可得:
\( \overrightarrow{f(S\cap\{a\})}=\\ \overrightarrow{f(S)}+\sum_{T\subseteq S}A^ag\overrightarrow{\sum(T)}=\\ \overrightarrow{f(S)}+\overrightarrow{f(S)}A^a=\\ \overrightarrow{f(S)}(I+A^a) \)

归纳一下,若 \(S=\{a_1,a_2,...,a_n\}\),则有:
\(\overrightarrow{f(S)}=\overrightarrow{g_0}\prod\limits_{i=1}^n(I+A^{a_i})\)

用该式进行暴力,期望复杂度 \(O(n^3)\)

用线段树维护 \(\sum\limits_{i=l}^r\sum\limits_{j=i}^r\prod\limits_{k=i}^jI+A^{a_i}\),期望复杂度 \(O(3^3q\log n)\)

D. 偶数

难度:紫
有趣的字符串思维题。
首先设一个偶数字符串 \(u\)\(vv\),其新的偶数字符串必为 \(vwvw\) 的形式,其中 \(w\)\(v\) 的前缀且为 \(v\) 的周期,容易证明 \(w\) 必为 \(v\) 的最小周期。

举个例子,假设 \(u=121121\),则 \(v=121\),且 \(w=12\),则新的偶数字符串为 \(1211212112\)

所以每次用 KMP 暴力求最小周期,复杂度 \(O(n+q)\)

继续优化。我们分两种情况:

\(len(w)\)\(len(v)\) 的因子,则字符串会变成 \(vww...w\)

关键在于 \(len(w)\nmid len(v)\) 的情况。手推会发现 \(vw\) 的最小周期必为 \(v\)

证明(本来想说显然的,还是写出来了):
假设有 \(x\)\(vw\) 最小周期且满足 \(len(w)\nmid len(v),len(v)>len(x)\)
则若 \(len(w)\mid len(v)-len(x)\),有 \(gcd(len(w),len(x))<len(x)\)\(vw\) 最小周期,矛盾。
\(len(w)\nmid len(v)-len(x)\),有 \(gcd(len(w),(len(v)-len(x))\ mod\ len(w))<len(x)\) 为最小周期,矛盾。

所以,若 \(s_1=v,s_2=vw\),则 \(s_i=s_{i-1}s_{i-2}\)(看上去像不像斐波那契数列?)。
发现 \(len(v_i)\geq 2*len(v_{i-1})\),所以每次计算 \(\log n\) 次就行了。
期望复杂度 \(O(len(u)+q\log n)\)

posted @   nagato__yuki  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示