预处理每个位置之前有多少个P,每个位置之后有多少个T。

对于每个A,贡献的答案是这个A之前的P个数*这个A之后T个数。

#include<cstdio>
#include<cstring> long long MOD=1e9+;
const int maxn=1e5+; long long dp1[maxn],dp2[maxn];
char s[maxn]; int main()
{
scanf("%s",s);
memset(dp1,,sizeof dp1);
if(s[]=='P') dp1[]=;
for(int i=;s[i];i++)
{
dp1[i]=dp1[i-];
if(s[i]=='P') dp1[i]++;
}
memset(dp2,,sizeof dp2);
int len=strlen(s);
if(s[len-]=='T') dp2[len-]=;
for(int i=len-;i>=;i--)
{
dp2[i]=dp2[i+];
if(s[i]=='T') dp2[i]++;
}
long long ans=;
for(int i=;s[i];i++)
{
if(s[i]=='A')
ans=(ans+dp1[i-]*dp2[i+])%MOD;
}
printf("%lld\n",ans);
return ;
}

最新文章

  1. LR录制Flex+Web,登录功能之登录密码出错的处理
  2. css 文本显示点点点
  3. MFC获取光标相对于控件所在行
  4. Linux 查看 网卡类型
  5. c#中cookies的存取操作
  6. python判断一个数字是整数还是浮点数
  7. Cookie介绍及JavaScript操作Cookie方法详解
  8. 循环执行sql语句
  9. 逆向知识第一讲,IDA的熟悉使用,以及TEB,PEB结构
  10. Luogu P3412 仓鼠找$sugar$ $II$
  11. Centos7上安装java
  12. web_ui各种元素的操作
  13. python中深拷贝和浅拷贝
  14. 如何在本地搭建一个Android应用crashing跟踪系统-ACRA
  15. C templet and switch case with serial number
  16. 酷派大神F2使用QPST进行nv备份恢复,解决无信号问题
  17. Python学习---ModelForm拾遗180325
  18. docker创建image方法以及常用指令介绍
  19. python【数据类型:列表与元组】
  20. thrift框架

热门文章

  1. Chapter 2 Open Book——17
  2. Oracle技术整理(转载)
  3. 其它网页可以上网,IE浏览器打不开网页的解决办法
  4. login/logout切换
  5. jquery 高亮
  6. 省市便利 UIPicherView
  7. 全文检索工具推荐FileLocator
  8. Hibernate 系列教程5-双向多对一
  9. codeforces 689B Mike and Shortcuts 最短路
  10. JS取非行间样式