Codeforces Round 879 (Div. 2)C. Game with Reversing

题目大意

给两个字符串,轮流进行两个操作,求使两个字符串相等需要的最少次数

操作1:改变某个字符串的某个字符;操作2:翻转某个字符串

进行一次操作1,就必须进行一次操作2,反之亦然,当两个字符串相等时立即停止操作;

思路: 

发现操作二作用于哪个字符串都一样,贪心,找出顺着比和倒着比 不同字符的个数,然后分别讨论,取最少次数

题目链接:Problem - C - Codeforces

void solve() {
	int ans = 0, ans1 = 0;
	cin >> n >> s >> p;
	for(int i = 0; i < n; i ++ ) {
		if(s[i] != p[i]) ans ++ ;
		if(s[n - i - 1] != p[i]) ans1 ++ ;
	}
	if(ans & 1) ans = ans * 2 - 1;
	else ans = ans * 2;
	if(ans1 % 2 == 0) ans1 = max(2, ans1 * 2 - 1);
	else ans1 = ans1 * 2;
	cout << min(ans, ans1) << "\n";
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值