zoukankan      html  css  js  c++  java
  • Kattis

    题目链接

    https://open.kattis.com/problems/names

    题意
    给出一个字符串
    有两种操作
    0.在字符串的最末尾加一个字符
    1.更改字符串中的一个字符

    求最少的操作步数使得字符串变成回文串

    思路
    由于回文串具有对称关系

    所以给出一串回文串 最多的操作步数 就是 len / 2
    只改一半不同的字符就可以了

    所以我们可以先将字符串倒置

    然后依次一步一步 挪过去 与原串比较 比出有多少个不同的字符

    那么操作次数就是 挪位数+不同字符个数/ 2

    比如说
    样例

    kaia
    aiak 挪位数 0 不同字符个数 4 总操作数 2

    kaia
    aiak 挪位数 1 不同字符个数 0 总操作数1
    就是答案了

    AC代码

    #include <cstdio>
    #include <cstring>
    #include <ctype.h>
    #include <cstdlib>
    #include <cmath>
    #include <climits>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <deque>
    #include <vector>
    #include <queue>
    #include <string>
    #include <map>
    #include <stack>
    #include <set>
    #include <list>
    #include <numeric>
    #include <sstream>
    #include <iomanip>
    #include <limits>
    
    #define CLR(a, b) memset(a, (b), sizeof(a))
    #define pb push_back
    #define bug puts("***bug***");
    //#define gets gets_s
    
    using namespace std;
    typedef long long ll;
    typedef long double ld;
    typedef unsigned long long ull;
    typedef pair <int, int> pii;
    typedef pair <ll, ll> pll;
    typedef pair <string, int> psi;
    typedef pair <string, string> pss;
    typedef pair <double, int> pdi;
    
    const double PI = acos(-1.0);
    const double E = exp(1.0);
    const double eps = 1e-8;
    
    const int INF = 0x3f3f3f3f;
    const int maxn = 1e4 + 10;
    const int MOD = 1e9 + 7;
    
    int main()
    {
        string s;
        getline(cin, s);
        string tmp = s;
        reverse(s.begin(), s.end());
        int len = s.size();
        int ans = len / 2;
        for (int i = 0; i < len; i++)
        {
            int step = i;
            int dif = 0;
            for (int j = i, k = 0; j < len; j++, k++)
            {
                if (tmp[j] != s[k])
                    dif++;
            }
            dif /= 2;
            ans = min(ans, dif + step);
        }
        cout << ans << endl;
    }
    
    
  • 相关阅读:
    Solution -「USACO 2020.12 P」Spaceship
    Solution -「USACO 2020.12 P」Sleeping Cows
    Solution -「HDU #6566」The Hanged Man
    Solution -「JOISC 2019」「LOJ #3036」指定城市
    HTML5 之required修改默认提示
    Js 之内容加密
    小程序 之生成接口签名
    Js 之Api接口验签
    View.js 之加载动画
    View.js 之跳转动画
  • 原文地址:https://www.cnblogs.com/Dup4/p/9433089.html
Copyright © 2011-2022 走看看