zoukankan      html  css  js  c++  java
  • Good Bye 2020 C

    Good Bye 2020 C

    大意

    给你一个仅由小写字母组成的串,你可以将任意位置换成任意小写字母。

    问,你最少可以通过换几个字母使得串中没有长度大于一的回文串。

    思路

    首先,一个长度较大的回文串一定至少有一个长度较小的回文串在其中心。

    对于奇数长度,这个较小的串长度为 (3) ,对于偶数长度,为 (2)

    如果我们将这个较小的回文串破坏,显然以此为中心的更大的回文串(如果有)也会被破坏

    因为小写字母有 (26) 个,而较小长度的回文串长度不超过 (3) ,所以,我们一定有一种替换方法,使得对于已经修改过的地方,不会生成新的回文串,对于现有的回文串,又能够破坏掉它。

    然后贪心的将每个回文串的结束处的字母替换。

    代码

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstring>
    using namespace std;
    
    #define ll long long
    #define ull unsigned long long
    #define cint const int&
    #define Pi acos(-1)
    
    const int mod = 998244353;
    const int inf_int = 0x7fffffff;
    const ll inf_ll = 0x7fffffffffffffff;
    const double ept = 1e-9;
    
    int t;
    string a;
    int dp[100100][26];
    
    int main() {
        cin >> t;
        while(t--) {
            int ans=0;
            cin >> a;
            int n = a.length();
            for(int i=0; i<n; i++) {
                if(i>0 && i<n-1)
                    if(a[i-1] == a[i+1] && a[i-1] != '0') {
                        ++ans;
                        a[i+1] = '0';
                    }
                if(i<n-1 && a[i] != '0')
                    if(a[i] == a[i+1]) {
                        ++ans;
                        a[i+1] = '0';
                    }
            }
            cout << ans << endl;
        }
        return 0;
    }
    

    28min,-0

  • 相关阅读:
    自动化系列-pyppeteer安装
    用python做一个可视化生成二维码的工具
    Python第三方包之DingDingBot
    封装属于自己的Python包
    sqlldr使用
    MS MQ 消息队列
    PDF打印
    oracle 存储过程编辑 卡死
    winrar 压缩文件方法
    数值 转换 成 带千位符的数值,且转成大写
  • 原文地址:https://www.cnblogs.com/ullio/p/14215903.html
Copyright © 2011-2022 走看看