首页 > 其他分享 >D. "a" String Problem

D. "a" String Problem

时间:2024-06-11 22:22:09浏览次数:27  
标签:字符 return String ll len while ans Problem

原题链接

一句话题解

由于t必须要包含非a字符,所以假如t包含前k个非a字符,那么s所包含的非a字符数量一定是k的倍数

实施

遍历t能包含几个非a字符,然后再算有几种填充a的方法
复杂度 \(logn·n\)
之所以有logn是因为遍历s包含的非a字符数量的因子

code

#include<bits/stdc++.h>
using namespace std;
#define ll long long

inline void read(ll &x) {
    x = 0;
    ll flag = 1;
    char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-') flag = -1;
        c = getchar();
    }
    while(c >= '0' && c <= '9') {
        x = (x << 3) + (x << 1) + (c ^ 48);
        c = getchar();
    }
    x *= flag;
}

inline void write(ll x) {
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}

ll solve() {
    string s;
    cin >> s;
    ll n = s.length();
    s = ' ' + s;
    vector<ll> p;
    for(ll i = 1; s[i]; i++) if(s[i] != 'a') p.push_back(i);

    ll num = p.size();
    if(!num) return n - 1;
    ll ans = 0;

    for(ll len = 1; len <= num; len++) {
        if(num % len) continue;
        bool flag = 1;
        for(ll i = len; i < num; i++) {
            if(s[p[i]] != s[p[i-len]]) {
                flag = 0;
                break;
            }
            if(i % len && p[i] - p[i-1] != p[i-len] - p[i-len-1]) {
                flag = 0;
                break;
            }
        }

        if(flag) {
            ll pregap = p[0] - 1, sufgap = n - p[num-1];
            for(ll i = len; i < num; i += len) {
                sufgap = min(sufgap, p[i] - p[i-1] - 1);
            }
            for(ll i = 0; i <= sufgap; i++) {
                ans++;
                if(sufgap - i > 0) ans += min(pregap, sufgap - i);
            }
            //printf("len:%d  ans:%d\n",len,ans);
        }
    }
    return ans;
}

int main() {
    ll t;
    read(t);
    while(t--) {
        write(solve());
        putchar('\n');
    }
    return 0;
}

标签:字符,return,String,ll,len,while,ans,Problem
From: https://www.cnblogs.com/pure4knowledge/p/18242880

相关文章

  • 基本数据类型 String,null 和 undefined,运算符,流程控制,JavaScript之数组,数组常用
    Ⅰ基本数据类型String【一】String类型String类型就是字符串类型【二】定义变量【1】常规变量var变量名="变量值";//一般用这种var变量名='变量值';不支持三引号【2】可以先声明不赋值先用varb;再对变量b赋值varb='6';【三】字符串的格式化输出语法......
  • Go - The map[string]interface{} map
    Rememberthatthebiggestadvantageyougetfromusingamap[string]interface{}map,or anymapthatstoresaninterface{}valueingeneral,isthatyoustillhaveyourdatainitsoriginal stateanddatatype.Nowadays,webservicesworkbyexchangingJS......
  • DateTime.Now.ToLocalTime().ToString();
    原文链接:https://www.cnblogs.com/longshen/archive/2010/02/10/1667074.html//2009-9-520:12:12//获取日期DateTime.Now.ToLongDateString().ToString();    //2009年9月5日DateTime.Now.ToShortDateString().ToString();       //2009-9-5DateTime.Now.ToStr......
  • Codeforces Problem 1980B Choosing cubes(基本排序)
    timelimitpertest1secondmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputDmitryhas n......
  • 【JavaScript】内置对象 - 字符串对象 ⑦ ( String 字符串替换 | replace 函数 | repl
    文章目录一、String字符串替换1、replace函数替换字符串2、使用replace函数替换所有匹配字符串3、replaceAll函数替换字符串二、String字符串转数组1、split函数切割字符串2、代码示例-切割字符串String字符串对象参考文档:https://developer.mozilla.......
  • 第四章: 全面梳理Java 标识符变量的声明,基本数据类型,String类型以及相互之间的类型
    1.关键字和保留字关键字(keyword)是指被Java语言赋予了特殊含义,用做专门用途的字符串(单词)其特点就是关键字中所有字母都为小写官方地址:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html保留字(reservedword)是当前Java版本尚未使用,但以......
  • c++ stringstream
    转载:https://blog.csdn.net/jllongbell/article/details/79092891v前言:  以前没有接触过stringstream这个类的时候,常用的字符串和数字转换函数就是sscanf和sprintf函数。开始的时候就觉得这两个函数应经很叼了,但是毕竟是属于c的。c++中引入了流的概念,通过流来实现字......
  • Zgo - randInt, randString
     packagemainimport("fmt""math/rand""strings")const(//AsweonlywanttogetprintableASCIIcharacters,welimittherangeofpseudo-randomnumbers//thatcanbegenerated.Thetotalnumber......
  • 网上 copy 的一段 javascript 代码 String.prototype.replaceAll = fucntion(){...}
    早些年,浏览器没有内置字符串的replaceAll()方法,就从网上copy了一段replaceAll()的实现:String.prototype.replaceAll=function(AFindText,ARepText){raRegExp=newRegExp(AFindText,"g");returnthis.replace(raRegExp,ARepText)}今天突然遇到一个问题,定位到了这段代码,我......
  • Git-SSL证书-验证问题-可能由加速器引起:SSL certificate problem: unable to get loca
    一、问题的出现    当我们在使用Git 将本地仓库的代码推送到远程仓库或者从远程仓库克隆到本地时可能遇到以下问题。fatal:unabletoaccess'https://github.com/User/XXX/':SSLcertificateproblem:unabletogetlocalissuercertificate    即......