0
点赞
收藏
分享

微信扫一扫

1037C. Equalize

笙烛 2022-02-26 阅读 33

C. Equalize:题目

题意:a字符串变成b字符串,有两种方法,一种是选两个换位置,花费为abs[j-i],二是单独一个变,花费为1。
思路:如果两个需要变并且不一样挨在一起就可以省一点花费。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<int> a((int)4e5);
vector<int> b((int)4e5);
string str1, str2;
int main()
{
    int n;
    cin >> n;
    cin >> str1 >> str2;
    int cou = 0, sum = 0;
    for (int i = 0; i < n; i++)
    {
        if (str1[i] != str2[i])
            cou++;
        else
        {
            for (int j = i - cou; j < i - 1; j++)
            {
                if (str1[j] != str1[j + 1])
                {
                    sum++;
                    cou -= 2;
                    j++;
                }
            }
            sum += cou;
            cou = 0;
        }
    }
    for (int j = n - cou; j < n - 1; j++)
    {
        if (str1[j] != str1[j + 1])
        {
            sum++;
            cou -= 2;
            j++;
        }
    }
    sum += cou;
    cout << sum << endl;
}
举报

相关推荐

0 条评论