传送门

题意: 给你一个长度为n的字符串, 字符串只由 A B 组成。

   问你这个字符串存在多少个 good string; ( 连续的一段子串 )

   good string 的定义就是: 字符串中所有的元素都属于这个字符串中的某个回文串。

   例如: AAABBB 就是一个good string, 因为 AAA 都属于AAA这个回文。BBB也属于BBB这个回文。

      ABAA 也是一个 good string, 因为 第一个A 属于 ABA 这个回文,最后一个A属于AA这个回文。

解: 思维题。  发现只有 ABB或者 BBA 这种 是不行的, 其他怎么选都是行的。

   若全都是合法的, 那对于每个位置 i, 以它作为子串的右端点,能选的左端点有 i - 1个。

   那对于以 i 为右端点的,不能选的左端点分类。

   1、若是像 ABBBA, 这种的,那你以第二个A为右端点,不能选的就是两个A之间连续的B那一段的长度。

   2、对于 ABBABBBB 那你 以最右边的B为右端点,不能选的就是以第二个A为左端点的这一段,其他都可以选。

#include <bits/stdc++.h>
#define LL long long
#define ULL unsigned long long
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define dep(i,j,k) for(int i=k;i>=j;i--)
#define INF 0x3f3f3f3f
#define mem(i,j) memset(i,j,sizeof(i))
#define make(i,j) make_pair(i,j)
#define pb push_back
#define Pi acos(-1.0)
using namespace std;
const int N = 3e5 + ;
char a[N];
int main() {
int n;
scanf("%d %s",&n, a + );
LL ans = ; int like = ;
rep(i, , n) {
if (i == || a[i] == a[i - ]) like++, ans += i - - (like < i);
else ans += i - - like, like = ;
}
printf("%lld\n",ans);
return ;
}

  

D. AB-string ( 思维 )的更多相关文章

  1. 2019牛客多校第三场B Crazy Binary String 思维

    Crazy Binary String 思维 题意 给出01串,给出定义:一个串里面0和1的个数相同,求 满足定义的最长子序列和子串 分析 子序列好求,就是0 1个数,字串需要思考一下.实在没有思路可 ...

  2. B. Game with string 思维问题转化

    B. Game with string 思维问题转化 题意 有一个字符串 每次可以删去连续的两个同样的字符,两个人轮流删,问最后谁能赢 思路 初看有点蒙蔽,仔细看看样例就会发现其实就是一个括号匹配问题 ...

  3. [SOJ #687]双生串(2019-11-6考试)/[hdu5431]AB String

    题目大意 把所有仅包含\(AB\)的字符串按字典序排列,给你一个仅包含\(AB\)的字符串\(S\),然后有\(Q\)个问题,第\(i\)个问题给你\(k_i\),求不是\(S\)的子串中,第\(k_ ...

  4. Nikita and string [思维-暴力] ACM

    codeforces Nikita and string time limit per test   2 seconds memory limit per test   256 megabytes O ...

  5. Codeforces ~ 1009B ~ Minimum Ternary String (思维)

    题意 给你一个只含有0,1,2的字符串,你可以将"01"变为"10","10"变为"01","12" ...

  6. Codeforces Round #527 -A. Uniform String(思维)

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  7. CF1009B Minimum Ternary String 思维

    Minimum Ternary String time limit per test 1 second memory limit per test 256 megabytes input standa ...

  8. Codeforces Round #550 (Div. 3) E. Median String (思维,模拟)

    题意:给你两个字符串\(s\)和\(t\),保证\(t\)的字典序大于\(s\),求他们字典序中间的字符串. 题解:我们假设题目给的不是字符串,而是两个10禁止的正整数,那么输出他们之间的数只要把他两 ...

  9. Codeforces Round #501 (Div. 3) B. Obtaining the String (思维,字符串)

    题意:有两个字符串\(S\)和\(T\),判断\(T\)是否能由\(S\)通过交换某位置的相邻字符得到,如果满足,输出交换次数及每次交换的位置,否则输出\(-1\). 题解:首先判断不满足的情况,只有 ...

  10. Codeforces 1221F Game With String 思维题

    题意:有两个人玩游戏,游戏规则如下:有一个长度为n的字符串,这个字符串由 . 和 X 构成,Alice可以选择a个连续的 . 把它们变成X, Bob可以选择连续的b个 . 把它们变成X.题目中保证a ...

随机推荐

  1. Abandoning Roads CodeForces - 1149D (最小生成树)

    大意: 给定无向图, 边权只有两种, 对于每个点$x$, 输出所有最小生成树中, 点$1$到$x$的最短距离. 先将边权为$a$的边合并, 考虑添加边权为$b$的边. 每条路径只能经过每个连通块一次, ...

  2. SVM的概率输出(Platt scaling)

    SVM的概率输出(Platt scaling) 2015-10-22 10:38:19 闲渔Love吉他 阅读数 8121 文章标签: Platt Scaling Calibr 更多 分类专栏: 计算 ...

  3. 【转载】Java枚举的使用

    枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中.此外,枚举类型还提供了安全检查功能.枚举类型本质上还是以类的形式存在. 1.使用枚举类型设置常量以往设置常量,通常将常量放置在接口中,这样 ...

  4. 傅里叶变换通俗解释及快速傅里叶变换的python实现

    通俗理解傅里叶变换,先看这篇文章傅里叶变换的通俗理解! 接下来便是使用python进行傅里叶FFT-频谱分析: 一.一些关键概念的引入 1.离散傅里叶变换(DFT) 离散傅里叶变换(discrete ...

  5. JavaScript Drum kit

    用 JavaScript 实现网页鼓乐器,相关的初始代码在 JavaScript30 官网和 GitHub 上已经存在.我把 sound 文件夹下的音频全部替换掉了,一些相关解释也直接在注释中标明. ...

  6. js检测是不是数字

    function isValueNumber(value) { var reg = (/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9][0-9]*$)|(^-?0{1}$)/); var ...

  7. 【导出导入】IMPDP table_exists_action 参数的应用

    转自:https://yq.aliyun.com/articles/29337 当使用IMPDP完成数据库导入时,如遇到表已存在时,Oracle提供给我们如下四种处理方式:a.忽略(SKIP,默认行为 ...

  8. Spring MVC通过拦截器处理sql注入、跨站XSS攻击风险

    sql注入就是通过url或者post提交数据时候,字符串类型的参数会被别人利用传入sql语句,最终破坏数据库或者达到一些见不得人的目的. 有时候因为业务需要url中会带一些参数,比如 ?type=xx ...

  9. fiddle--APP弱网测试

    一.安装Fiddler 网上说要先安装.NET Framwork4,应该是由于本机已装,所以在安装Fiddler时并没有相关提示. Fiddler安装包:https://www.telerik.com ...

  10. 【Hibernate】检索方式

    一.概述 二.HQL 2.1 简介 2.2 查询所有记录 2.3 查询使用别名 2.4 排序 2.5 分页查询 2.6 单个对象查询 2.7 参数绑定 2.8 投影操作 2.9 模糊查询 2.10 S ...