1 条题解
-
0
题目详细题解
题目理解
题目要求判断一个字符串 是否能够被分割成至少 个非空子串 ,使得对于任意 ,都满足 的第一个字符不等于 的最后一个字符。
关键观察
设字符串 的第一个字符为 ,最后一个字符为 。
核心结论:字符串 是“好字符串”当且仅当 。
充分性证明
若 ,则 是好字符串。
构造方法:
- 令
- (只取第一个字符)
- (从第二个字符到末尾)
验证条件:
- 对于 : 的第一个字符是 , 的最后一个字符是
- 因为 ,所以条件成立
- ,满足要求
因此这种情况下答案是
"YES"。
必要性证明
若 ,则 不是好字符串。
假设存在一种分割方式 ()满足条件。
考虑 的第一个字符:
- 它一定等于
考虑 的最后一个字符:
- 它一定等于
根据条件,对于 ,必须有:
- 的第一个字符 的最后一个字符
即:
这与假设 矛盾。
因此不存在这样的分割,答案为
"NO"。
特殊情况讨论
需要注意的是,即使 ,也有可能让 来规避 的条件吗?
不能。因为条件要求对所有 成立,其中必然包含 这一对。这一对的要求是:
而:
只要 ,这一对就一定违反条件。
的值不能改变这个事实,因为 总是包含 作为其第一个字符, 总是包含 作为其最后一个字符。
算法步骤
- 读入测试用例数
- 对于每个测试用例:
- 读入 和字符串
- 如果 ,输出
"YES" - 否则输出
"NO"
- 1
信息
- ID
- 6678
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者