Good Bye 2020 C. Corda de palíndromo de poesia canina

Após a trágica morte de sua esposa, Eurídice, Orfeu desceu ao reino da morte para vê-la. Alcançar seus portões foi difícil, mas passar por eles provou ser ainda mais desafiador. Principalmente por causa de Cerberus, o cão de três cabeças de Hades.

Orfeu, um poeta famoso e músico, planeja acalmar Cérbero com sua poesia e passar por ele em segurança. Ele criou um poema muito peculiar para Cerberus. Consiste apenas em letras minúsculas em inglês.

Chamamos a substring de um poema de palíndromo se, e somente se, for lida da mesma forma para a frente e para trás. Uma string a é uma substring de uma string b se a puder ser obtido de b excluindo vários (possivelmente zero ou todos) caracteres do início e vários (possivelmente zero ou todos) caracteres do final.

Infelizmente, Cerberus não gosta de palíndromos de comprimento maior que 1. Por exemplo, no poema abaa, o cão de Hades não gostaria de substrings aba e aa.

Orfeu só pode acalmar Cérbero se o cão gostar de sua poesia. É por isso que ele deseja alterar seu poema para que não contenha substrings palíndromos de comprimento maior que 1.

Orpheus pode modificar o poema substituindo uma letra em qualquer posição por qualquer letra inglesa minúscula. Ele pode usar essa operação arbitrariamente muitas vezes (possivelmente zero). Como pode haver muitos palíndromos em seu poema, ele pode ter que fazer algumas correções. Mas quantos, exatamente? Dado o poema, determine o número mínimo de letras que devem ser alteradas para que o poema não contenha nenhum palíndromo de comprimento maior que 1.

Entrada
A primeira linha da entrada contém um único inteiro t (1≤t≤105) denotando o número de casos de teste, então t casos de teste seguem.

A primeira e única linha de cada caso de teste contém uma string não vazia de letras inglesas minúsculas, o poema de Orfeu.

A soma da extensão dos poemas de Orfeu em todos os casos de teste não excederá 105.

Saída
Você deve imprimir t linhas, i-ésima linha deve conter um único inteiro, resposta ao i-ésimo caso de teste.

Exemplo
inputCopy
7
babba
abaac
codeforces
zeroorez
abcdcba
bbbbbbb
a
outputCopy
1
1
0
1
1
4
0
Nota
No primeiro caso de teste, podemos substituir o terceiro caractere com ce obter um poema bacba sem palíndromo.

No segundo caso de teste, podemos substituir o terceiro caractere por d e obter um poema abdac sem palíndromo.

No terceiro caso de teste, o poema inicial já não contém nenhum palíndromo, então Orfeu não precisa mudar nada lá. O
grande palíndromo deve incluir o pequeno palíndromo, então só precisamos atravessar para encontrar as strings adjacentes

#include<map>
#include<stack>
#include<queue>
#include<string>
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define ls (k<<1)
#define rs (k<<1|1)
#define pb push_back
#define mid ((l+r)>>1)
#include<bits/stdc++.h>
using namespace std;
const int p=1e4+7;
const int mod=1e9+7;
const int maxn=1e6+1;
typedef long long ll;
const int inf=0x3f3f3f3f;
void solve(){
    
    
    int t;
    cin>>t;
    while(t--){
    
    
        string s;
        cin>>s;
        int len=s.size();
        int ans=0;
        for(int i=0;i<len;i++){
    
    
            if(s[i]==s[i+1]&&i<len-1&&s[i]!='0'){
    
    
                s[i+1]='0';
                ans++;
            }
            else if(i>0&&i<len-1&&s[i-1]==s[i+1]&&s[i+1]!=0){
    
    
                s[i+1]='0';
                ans++;
            }
        }
        cout<<ans<<endl;
    }
}
int main()
{
    
    
   	ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
	solve();
    return 0;
}

Acho que você gosta

Origin blog.csdn.net/qq_45891413/article/details/112058386
Recomendado
Clasificación