1 条题解
-
0
子任务 1:保证 。
枚举所有情况即可,时间复杂度 。
子任务 2:保证字符串 不包含字符
?
。相当于计数,枚举三个位置即可,时间复杂度 。
子任务 3:保证 。
因为如果一个
?
不是w
、m
、y
三者时等价,所以每个位置只有 种情况,枚举即可。时间复杂度 。子任务 4:保证 。
如果后面的子任务的做法实现不够优秀,仍然可以通过该子任务。
子任务 5:保证 ,。
考虑动态规划。
设 表示前 个字符串,有 个字符
w
,有 个子序列wm
,有 个子序列wmy
是否可行。构造只需要倒推即可。
注意到只有 时状态有效,时间复杂度 。
子任务 6:保证 。
可以把子序列的贡献算在字符
m
上,贡献为之前的w
的数量乘之后的y
的数量。仍然考虑动态规划,设 表示前 个字符串中的
m
贡献的子序列数为 , 表示前 个字符串有多少个w
, 表示后 个字符串多少个y
是否可行。转移时枚举当前位置所填的字符,构造只需要倒推即可。时间复杂度 。注意到子任务 5 的解法中状态表示的只是是否可行,也可以使用
std::bitset
优化来通过子任务 6,时间复杂度 。子任务 8:无特殊限制。
注意到子任务 6 中状态表示的只是是否可行,可以使用
std::bitset
优化,时间复杂度 。
信息
- ID
- 1348
- 时间
- 1000ms
- 内存
- 1024MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 14
- 已通过
- 4
- 上传者