195 字
1 分钟

题解:P10893 城市化发展委员会

2024-08-22
浏览量 加载中...

笑点解析:昨天写完没点申请题解,今天题解申请通道关了。

看到很多大佬写了 STL 和单调数据结构做法,这里给个思维含量颇高的数学做法。

题目描述#

规定一个序列为“安全的”当且仅当这个序列的所有前缀和为正数。

给定一个长度为 nn 的序列 AiA_i,执行 nn 次以下操作得出新的数列 Ai+1A_{i+1}

  • AiA_i 是安全的,将其接到 Ai+1A_{i+1} 末尾。
  • AiA_i 循环左移 11 位。

Ak+1Ak\dfrac{|A_{k+1}|}{|A_k|},答案对 998244353998244353 取模。

思路解析#

设所求答案 f(i)=Ai+1Aif(i)=\dfrac{|A_{i+1}|}{|A_i|}g(i)=j=1iAijg(i)=\sum^i_{j=1}A_{ij},易证 f(i)=g(i)f(i)=g(i)。 于是 f(i+1)=g(i+1)=f(i)g(i)=f(i)2f(i+1)=g(i+1)=f(i)g(i)=f(i)^2。所以 f(k)=g(0)2kf(k)=g(0)^{2^k}。写个快速幂就行了,理论上可以用费马小定理再优化一下,没试。

不放代码。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
题解:P10893 城市化发展委员会
https://blog.walterfang.site/posts/solution-p10893/
作者
Walter_Fang
发布于
2024-08-22
许可协议
CC BY-NC-SA 4.0
最后更新于 2024-08-22,距今已过 503 天

部分内容可能已过时

评论区

目录