[CP / Codeforces] A. Tricky Template (Div. 2)

A. Tricky Template

分析

要求:判断是否存在与 a,b 匹配,但不与 c 匹配的 template

首先,可以很快构造出一个与 a,b,c 均匹配的 template(提示:组成该 template 的字母全大写),接下来只需要考虑如何修改该 template 以使其满足题目要求。

要想让 c 不匹配,只需修改 template 某个位置上的字符 x,如果 x 依然保持大写,那么它必须与 c 对应位置的字符相匹配;如果把 x 改为小写,那么它不能与 c 对应位置的字符相同。注意到后者的条件更加严格,因为它要求 a,b 对应位置的字符与 x 相同,故我们考虑前者,此时只需要满足 a,b 对应位置的字符和 x 不匹配即可。

现在我们得到了一个充分条件,即满足 a[i]c[i]b[i]c[i] 时满足题目要求,接下来证明它是必要条件,即从满足题目要求时可以推导出上述条件。

证明(不严谨)

将上述条件变换为:

¬(a[i]=c[i]b[i]=c[i])

应用反证法,若满足题目要求时有:

a[i]=c[i]b[i]=c[i]

成立,但此时的 template 在使某个 c[i] 不匹配时必然会导致 a[i]b[i] 不匹配,与前提条件矛盾,所以必要条件成立。

代码

void solve()
{
int n;
std::cin >> n;
std::string a, b, c;
std::cin >> a >> b >> c;
for (int i = 0; i < n; i++)
{
if (a[i] != c[i] && b[i] != c[i])
{
std::cout << "YES\n";
return;
}
}
std::cout << "NO\n";
}
posted @   ZXPrism  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示