C. The Fair Nut and String

题目链接https://codeforces.com/contest/1084/problem/C

题意:

给出一个字符串,找出都为a的子序列(比如ai,aj,ak)满足以下条件的个数:

1.子序列的索引单增(i<j<k);

2.在原字符串中,若ai=aj=ak=a,那么满足i<=k1<j,j<=k2<k 并且 ak1=ak2=b。

通俗点说,就是找这样的子序列个数:要么单个a,要么每个a之间都至少有一个b。

题解:

我们考虑在字符串末尾增加一个”哨兵“,其值为b。然后用b对a进行分割,每一段a 的个数为ai。

最后统计结果:(a1+1)*(a2+1)*...*(ax+1)-1。这里减去1是因为至少没有什么都不选的情况。

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+,MOD = 1e9+;
char s[N];
ll a[N];
int main(){
scanf("%s",s);
int len=strlen(s);
s[len]='b';
int num=,cnt=;
for(int i=;i<=len;i++){
if(s[i]=='a') num++;
if(s[i]=='b'){
a[++cnt]=num;
num=;
}
}
ll ans = ;
for(int i=;i<=cnt;i++) ans=ans*(a[i]+)%MOD;
printf("%I64d",ans-);
return ;
}

最新文章

  1. ASP.NET Core 中间件详解及项目实战
  2. HA-0302 退役
  3. pagefile.sys and heberfil.sys
  4. C#/Access-数据库获取自动编号的最大值
  5. Tap.js
  6. Android的消息处理机制(Looper,Handler,Message)(转)
  7. Jquery EasyUI修改行背景的两种方式
  8. jvm调优经验分享
  9. Android支付接入(八):Amazon亚马逊支付
  10. ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上
  11. HTML CSS基础(二)
  12. Xcode使用心得02:如何在项目中关闭ARC特性
  13. Oracle-02:SQL语言的分类或者说SQL语言的组成
  14. Linux的文本处理工具浅谈-awk sed grep
  15. php 把数组保存为标准的数组格式,存储到文件中
  16. python学习(七)
  17. 导入appiumlibrary显红
  18. Environment.NewLine
  19. SQL集合运算
  20. SQL Server快速部署作业到多台服务器

热门文章

  1. ruby 操作csv
  2. ruby 可枚举模块Enumerable
  3. 数列分块入门 1 LOJ6277
  4. SIMD数据并行(四)——三种结构的比较
  5. python2.7练习小例子(十八)
  6. 实用脚本 2 -- Linux下定时执行脚本
  7. php长整型完整输出
  8. Get Error when restoring database in Sql Server 2008 R2
  9. Queue模块初识
  10. sysctl -P 报错解决办法 error: &quot;net.bridge.bridge-nf-call-ip6tables&quot; is an unknown key