【codeforces 805D】Minimum number of steps
【题目链接】:http://codeforces.com/contest/805/problem/D
【题意】 
 
给你一个字符串; 
里面只包括a和b; 
让你把里面的”ab”子串全都去掉; 
方式是, 
每次操作可以把”ab”替换成为”bba”; 
直到整个字符串里面没有”ab”子串为止
【题解】 
 
从ab开始 
ab->bba 
左边再加一个a的话 
即aab 
就相当于在bba左边加了一个a 
abba 
-> 
bbaba 
bbbbaa 
会发现就是最左边那个a一直在往右走; 
更一般的; 
会发现 
每次b前面有x个a 
则答案递增2 x −1  
且这里的a会一直保留下去; 
因为每次,所有的a都会跑到最右边去; 
所以,遇到a就累加a的个数cnt; 
遇到b就累加答案2 cnt −1  
可以预处理出2^x; 
也可以用快速幂求。 
 
 
【Number Of WA】 
 
0 
 
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1e6+100;
const LL MOD = 1e9+7;
LL ksm(int y)
{
    LL t = 1,x = 2;
    while (y)
    {
        if (y&1) t = (t*x)%MOD;
        x = (x*x)%MOD;
        y>>=1;
    }
    return t;
}
char s[N];
int main()
{
    //freopen("F:\\rush.txt","r",stdin);
    ios::sync_with_stdio(false),cin.tie(0);//scanf,puts,printf not use
    cin >> (s+1);
    int len = strlen(s+1);
    int numa = 0;
    LL ans = 0;
    rep1(i,1,len)
        if (s[i]=='a')
            numa++;
        else
            ans=(ans+(ksm(numa)-1)%MOD)%MOD;
    cout << ans << endl;
    return 0;
}
【codeforces 805D】Minimum number of steps的更多相关文章
- Codeforces 805D/804B - Minimum number of steps
		
传送门:http://codeforces.com/contest/805/problem/D 对于一个由‘a’.‘b’组成的字符串,有如下操作:将字符串中的一个子串“ab”替换成“bba”.当字符串 ...
 - 【Codeforces 1086B】Minimum Diameter Tree
		
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 统计叶子节点个数m 把每条和叶子节点相邻的边权设置成s/cnt就可以了 这样答案就是2*s/m(直径最后肯定是从一个叶子节点开始,到另外一个叶 ...
 - codeforces 805 D. Minimum number of steps(数学)
		
题目链接:http://codeforces.com/contest/805/problem/D 题意:只有一个操作就是将ab变成bba直到不能变为止,问最少边几次. 题解:这题可以多列几组来找规律, ...
 - Codeforces 805 D  Minimum number of steps
		
题意: 给定一串字符串,将所有“ab”的子串替换为“bba”,询问多少次操作后没有子串“ab”. 分析: 观察可得,将“ab”替换为“bba”有两种结果. ①a移到了b的后面 ②增加了一个b 而且最终 ...
 - Codeforces 805D - Minimum number of steps
		
805D - Minimum number of steps 思路:简单模拟,a每穿过后面一个b,b的个数+1,当这个a穿到最后,相当于把它后面的b的个数翻倍.每个a到达最后的步数相当于这个a与它后面 ...
 - Minimum number of steps CodeForces - 805D(签到题)
		
D. Minimum number of steps time limit per test 1 second memory limit per test 256 megabytes input st ...
 - Minimum number of steps 805D
		
http://codeforces.com/contest/805/problem/D D. Minimum number of steps time limit per test 1 second ...
 - Codeforces Round #411 div 2 D. Minimum number of steps
		
D. Minimum number of steps time limit per test 1 second memory limit per test 256 megabytes input st ...
 - 【codeforces 415D】Mashmokh and ACM(普通dp)
		
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
 
随机推荐
- Aizu/Aoj 0121  Seven Puzzle
			
这题应该算是经典的八数码问题的弱化版吧:给你一个4x2的方版,上面有0-7 八个数字,每次只能让编号0的方格跟他的上下左右的方格交换:所以也就是把方格0当做空格看待,每次只有空格周围的方格能够向空格处 ...
 - 问题: Unsupported major.minor version 51.0
			
Unsupported major.minor version 51.0 问题原因:外部jar包使用jdk1.7(jdk7)编译,而使用此jar包的工程jdk版本为jdk1.6(jdk6),算是版本不 ...
 - 现代英特尔® 架构上的 TensorFlow* 优化——正如去年参加Intel AI会议一样,Intel自己提供了对接自己AI CPU优化版本的Tensorflow,下载链接见后,同时可以基于谷歌官方的tf版本直接编译生成安装包
			
现代英特尔® 架构上的 TensorFlow* 优化 转自:https://software.intel.com/zh-cn/articles/tensorflow-optimizations-on- ...
 - JDK8新特性:函数式接口
			
一,定义 函数式接口,英文为Functional Interface.首先它是一个接口,那么它与其它接口有什么不同呢?不同点就是在这个接口中只允许有一个抽象方法. 这里的只允许一个抽象方法不包括以下几 ...
 - c.vim的安装和使用
			
之前写了一些废话,今天写的稍微具体点. 在mac上给vim装个插件,,倒腾了半天 先要去找到c.vim.zip,自己百度下,官网就有的,我mac下下来,是直接解压的格式,而不是*.zip,也就是说不需 ...
 - HBase编程 API入门系列之scan(客户端而言)(5)
			
心得,写在前面的话,也许,中间会要多次执行,连接超时,多试试就好了. package zhouls.bigdata.HbaseProject.Test1; import javax.xml.trans ...
 - php 微信支付 回调通知不停的坑
			
微信支付已完工,最后有点小问题就是微信的回调会重复9次 第一步: $return = "success"; echo $return; 不管用 第二步: $return = &qu ...
 - CI中的验证码
			
CI中的验证码相对来说使用非常方便直接加载类调用函数以及一些配置,代码如上,比较简单,具体函数可在CI手册的辅助函数参考CAPTCHA辅助函数中查询,CI中的验证码是直接生成验证码图片在你自己创建的C ...
 - Git Learning Part II - Working locally
			
file status life circle basic: modified: Examples: untracked: unmodified: modified: Git branching ...
 - MBR分区表格式 - 简明概述
			
目前硬盘主要有MBR和GPT分区两种格式,前者是Windows XP之前时代主流的分区格式,后者则是现在Windows 8之后主流的分区格式.(Windows 7需要通过一些手段能实现支持GPT,而W ...