洛谷 P3741 honoka的键盘

题目链接

思路

题中无非三种状况:

  1. VK,间接计数
  2. VV,扭转一个字符后计数
  3. KK,扭转一个字符后计数
  4. KV,无论如何无奈计数

能够先遍历一遍,把所有VK找进去,计数,而后把VK换成“XX”,再进行第二次遍历,找VV或者KK,如果找到,总数就加1,并退出循环。

代码

/* * @Description:  * @Author: 多多 * @Date: 2020-10-24 22:28:12 * @LastEditTime: 2020-10-24 22:32:09 * @LastEditors: 多多 */#include <bits/stdc++.h>using namespace std;int main(){    //freopen("P3741.in", "r", stdin);    ios::sync_with_stdio(false);    cin.tie(0);    int n;    cin >> n;    string s;    cin >> s;    int sum = 0;    for (int i = 0; i < n - 1; i++)    {        if (s[i] == 'V' && s[i + 1] == 'K')        {            sum++;            s[i] = s[i + 1] = 'X';        }    }    for (int i = 0; i < n - 1; i++)    {        if ((s[i] == 'V' && s[i + 1] == 'V') || (s[i] == 'K' && s[i + 1] == 'K'))        {            sum++;            break;        }    }    cout << sum << endl;    return 0;}