333

333

1

所有有星星的格子,要么消失,要么移动到 (i+b,j+a) 的位置。

我们从上到小,从左到右决定每个地方有没有星星。
如果输入的位置 (i,j) 为空,那么原来这个地方肯定没有星星。

如果这个地方为灰色,那么判断 (ib,ja) 位置有没有星星(这个位置肯定已经被决策过了),如果有,那么这个位置 (i,j) 可以没有星星(因为要求星星总数最少),如果没有,或者根本没有这个位置,那么位置 (i,j) 就需要有星星。

如果输入的位置 (i,j) 为黑色,那么如果 (ib,ja) 不存在,或者这个位置肯定没有星星,那么输入不合法。否则,(i,j)(ib,ja) 都需要有星星。

2

考虑要求 abb 式的不同子序列个数。

那么显然对于每个数 x,只需要考虑第一次出现的时候,让它作为 abb 中的 a。
我们从后往前扫,记录有多少种数字已经出现了两次(就是作为 abb 中的 b),可以用桶来实现。
那么每当遇到满足上述条件的 x 时,将这个数字的种数累加即可。

3

该题要求反转一个区间后,a,b 数组有 i 个位置相同的方案数。

考虑枚举反转的区间的中心,该中心可能是某个位置(区间长度为奇数),也可能是某两个位置的中间(区间长度为偶数)。

两种情况类似,我们这里讨论长度为奇数的情况。
从这个中心往两边扫,设当前区间的左右边界是 iki+k,我们只需要比较这两个位置上 a,b 数组的相等情况,即可维护出 cnt 表示区间 [ik,i+k] 反转后,这段区间中 a,b 有多少个相等的位置。
只需要再提前计算 a,b 的每个前缀、后缀有多少个相等的位置,就可以得出反转这段区间后,两个数组整体有多少个相等的位置。
累计到桶中,最后输出答案即可。
时间复杂度 O(n2),空间复杂度 O(n)

posted @   suxxsfe  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?

This blog has running: 1856 days 1 hours 59 minutes 41 seconds

Copyright © 2025 suxxsfe
Powered by .NET 9.0 on Kubernetes
点击右上角即可分享
微信分享提示