目录

题目链接

AGC027 E - ABBreviate

题解

神仙啊

建议查看https://img.atcoder.jp/agc027/editorial.pdf

定义a = 1,b = 1发现在%3的情况下所有变换的相等的

性质:一个字符串,能变成字符c的条件是val[a] == val[c]并且a中有一个可以变换的位置

只需要判断这种变换不经过ababab这种就好了

那我们要求得就把字符串划分为k段,第i段的val值和第i字符的val值相等

f_i表示前i个看做一段的方案数

代码


#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
#define gc getchar()
#define pc putchar
#define LL long long
inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9') c = gc;
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
return x * f;
}
void print(LL x) {
if(x < 0) {
pc('-');
x = -x;
}
if(x >= 10) print(x / 10);
pc(x % 10 + '0');
}
const int maxn = 100007;
char t[maxn];
int n,s[maxn];
int f[maxn];
const int mod = 1e9 + 7;
int main() {
scanf("%s",t + 1);
n = strlen(t + 1);
bool flag = false ;
for(int i = 2;i <= n;++ i) if(t[i] == t[i - 1])flag = true;
if(!flag) {
puts("1");
return 0;
}
int now = 0,pre[3] = {0,-1,-1};
f[0] = 1;
for(int i = 1;i <= n;++ i) {
now = (now + 2 - (t[i] == 'a')) % 3;
if(!now && i < n) f[i] = 1;
++ now,now %= 3;
if(pre[now] != - 1) (f[i] += f[pre[now]]) %= mod;
++ now,now %= 3;
if(pre[now] != -1) (f[i] += f[pre[now]]) %= mod;
++ now,now %= 3;
pre[now] = i;
}
print(f[n]);
}

AGC027 E - ABBreviate的更多相关文章

  1. AGC027 D - Modulo Matrix 构造

    目录 题目链接 题解 代码 题目链接 AGC027 D - Modulo Matrix 题解 从第左上角第一个点开始染色,相邻不同色,染法唯一 那么一个点的四周与他不同色,我们另这个点比四周都大,那么 ...

  2. AGC027 C - ABland Yard 拓扑排序

    目录 题目链接 题解 代码 题目链接 AGC027 C - ABland Yard 题解 发现有解的充要条件是有一个形为AABBAABBAABB的环 此时每一个点至少与两个不同颜色的点相连 对于初始不 ...

  3. AGC027 A - Candy Distribution Again

    目录 题目链接 题解 代码 题目链接 AGC027 A - Candy Distribution Again 题解 贪心即可 代码 #include<cstdio> #include< ...

  4. AGC027 B - Garbage Collector 枚举/贪心

    目录 题目链接 题解 代码 题目链接 AGC027 B - Garbage Collector 题解 对于一组选取组的最优方案为,走到一点,然后顺着路径往回取点 设选取点坐标升序为{a,b,c,d} ...

  5. 【Atcoder】AGC027 题解

    A - Candy Distribution Again 大意:有x个糖给n个小朋友,必须分完,小朋友得到糖数为一个确切值的时候小朋友会开心,求最多的开心数 题解 直接排序然后贪心分,如果分到最后一个 ...

  6. 【赛事总结】◇赛时·8◇ AGC-027

    [赛时·8]AGC-027 日常AGC坑……还好能涨Rating +传送门+ ◇ 简单总结 感觉像打多校赛一样,应该多关注一下排名……考试的时候为了避免影响心态,管都没有管排名,就在那里死坑B题.最后 ...

  7. 【杂题总汇】AGC027 C - ABland Yard

    ◆AGC027◆C - ABland Yard 终于知道为什么比赛的时候这么多人做C题了…… +传送门+(这是beta版的) ◇ 题目(自己翻译的,不要在意细节……) P.S. (@ 2018-9-2 ...

  8. [AGC027E]ABBreviate

    Description AGC027E 给定一个仅由\(AB\)构成的字符串\(S\),给定两个操作,把\(AA\)换成\(B\),和把\(BB\)换成\(A\),问由这个字符串和任意次操作可以得到几 ...

  9. java stopwatch 功能

    C#中有一个stopwatch的功能,主要是用来监测程序执行时间的.java之前一直都在用如下方式完成: public static void main(String[] args) { long s ...

随机推荐

  1. IAR各个历史版本的下载地址

    http://supp.iar.com/Updates/?product=EWarm 点击进入上述链接,拉到最底部,点击old version即可见到所有的历史版本!!!

  2. redis学习笔记(面试题)

    1. 什么是redis Redis是一个数据库,他和我们传统的oracle数据库差别是它是基于内存的数据库:因为是基于内存,所以效率就高,在某些场景下就可以对我们传统的关系型数据库做一个补充 2. r ...

  3. 006_nginx动态upstream和安全检查模块

    一.参考Tengine   http://tengine.taobao.org/document_cn/http_dyups_cn.html ngx_http_dyups_module Descrip ...

  4. centos7.2环境中kettle环境搭建及任务推送配置详解

    目标:将mysql5.5中testdb1的ehr_user表推送到tdoa的ehr_user表中,为避免不必要的麻烦,两张表结构.编码,包括数据库编码保持一致 操作系统:centos7.2 kettl ...

  5. swoole 安装方法

    http://www.cnblogs.com/tudou1223/p/4530280.html 最近想用PHP写一个聊天网站,于是注意到了swoole这个扩展,看上它就是因为事件驱动异步非阻塞. Sw ...

  6. Mac Terminal 菜鸟篇之目录跳转命令

    以前一直都是使用Windows系统,连命令行都没怎么用过.来到了Mac,在某位大神的诱导下,我开始尝试使用Mac Terminal,下面总结的是一些简单的目录跳转命令(菜鸟级). 文件目录 首先要清楚 ...

  7. 随机森林学习-2-sklearn

    # -*- coding: utf-8 -*- """ RandomForestClassifier skleran的9个模型在3份数据上的使用. 1. 知识点: skl ...

  8. Android Menu用法全面讲解

    说明:本文只介绍Android3.0及以上的Menu知识点. 菜单的分类 菜单是Android应用中非常重要且常见的组成部分,主要可以分为三类:选项菜单.上下文菜单/上下文操作模式以及弹出菜单.它们的 ...

  9. oracle进阶之connect by笔记

    本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处. http://www.cnblogs.com/king-xg/p/6794562.html 如果觉得对您有帮 ...

  10. vue渲染时对象里面的对象的属性提示undefined,但渲染成功

    场景: 从后台请求的数据结构如下: 我的list是对象,而comment又是list里的对象,渲染成功了,却报如下错: 解决办法: 添加一个:v-if