有几个PAT
描述
字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。
现给定字符串,问一共可以形成多少个PAT?
输入
输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。
输出
在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。
样例输入
APPAPT
样例输出
2
#include <bits/stdc++.h> //动态规划判断A之前有多少个P 和A之后有多少个T
//求后面这个反过来求T之前有多少个A
using namespace std;
const int N=1e5+;
typedef long long ll;
int main()
{
ios::sync_with_stdio(false);
string ss;
cin>>ss;
ll dp1[N],dp2[N];
memset(dp1,,sizeof(dp1));
memset(dp2,,sizeof(dp2));
if(ss[]=='P')
dp1[]=;
else dp1[]=;
ll num=;ll u=;
for(int i=;i<ss.size();i++){ //这个位置的A前面又多少个P
if(ss[i]=='A'){
dp1[i]=dp1[u]+num;
num=;
u=i; //u 标记前面的A
// printf("%d %d\n",i,dp1[i]);
}
if(ss[i]=='P') num++;
}
ll len=ss.size()-;
if(ss[len]=='T')
dp2[len]=;
else dp2[len]=;
num=;u=len;
for(int i=ss.size()-;i>=;i--){ //这个位置的A后面有多少个T
if(ss[i]=='A'){
dp2[i]=dp2[u]+num;
num=;
u=i;
}
if(ss[i]=='T'){
num++;
}
}
// printf("%d \n",dp1[3]);
// for(int i=0;i<=len;i++){
// printf("dp1[i]=%d dp2[i]=%d\n",dp1[i],dp2[i]);
// }
ll sum=;
for(int i=;i<=len;i++){
if(dp1[i]!=&&dp2[i]!=){
sum=(sum+dp1[i]*dp2[i])%;
}
}
printf("%lld\n",sum);
return ;
}
有几个PAT的更多相关文章
- 《转载》PAT 习题
博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ...
- PAT Judge
原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/677 题目如下: The ranklist of PAT is generated fr ...
- PAT/字符串处理习题集(二)
B1024. 科学计数法 (20) Description: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+ ...
- PAT 1041. 考试座位号(15)
每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...
- PAT 1040. 有几个PAT(25)
字符串APPAPT中包含了两个单词"PAT",其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问 ...
- PAT 1032. 挖掘机技术哪家强(20)
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过105的正整数N,即参赛人数.随后N行,每行给出一位 ...
- pat甲级题解(更新到1013)
1001. A+B Format (20) 注意负数,没别的了. 用scanf来补 前导0 和 前导的空格 很方便. #include <iostream> #include <cs ...
- PAT (Basic Level) Practise 1040 有几个PAT(DP)
1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单 ...
- PAT (Basic Level) Practise 1045 快速排序(离散化+主席树区间内的区间求和)
1045. 快速排序(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 著名的快速排序算法里有一个经典的划分 ...
- PAT——乙级真题1003代码
#include<iostream> #include<string> using namespace std; int getLength(string str0); int ...
随机推荐
- Linux 首先基本包安装(vim啊什么的),源,源优化,项目架构介绍, (LNMuWsgi)Django项目相关软件mysql,redies,python(相关模块)安装配置测试
内容 补充: 查看已启动服务的端口 netstat -tulnp |grep (方式1) ss -tulnp|grep (方式2) 前期铺垫: . Linux要能上网 . 掌握Linux软件包安装方法 ...
- Cookie 判断页面是否为第一次打开 包括刷新
$.cookie = function(e, t, n) { if(arguments.length > 1 && (!/Object/.test(Object.prototyp ...
- 原生js实现无缝轮播
原生js实现无缝轮播 因为要做到无缝,所以就要把第一张图片和最后一张连接起来,在此处采用js克隆了第一张图片的节点,添加到最后,显示图片序号的小圆按钮也是使用js动态添加的. html部分 <d ...
- 微信H5支付坑一--手续费未结算
简单随笔小记: 场景:在微信H5支付的过程中,无论怎么支付完成,在微信商户后台查询手续费依然未扣除,当时手续费账户月为5元. 解决方法:起初无论怎么测试都不知道代码到底问题出在哪里了,想一下手续费账户 ...
- 集腋成裘-09-ECharts -HelloECharts-02
上一篇我们讲了可视化数据分析的重要性以及ECharts的一些的特性,这一篇我们继续学习一下ECharts的简单Demo 一:5 分钟上手 ECharts <!DOCTYPE html> & ...
- RPC原理及实现
一.什么是RPC RPC 的全称是 Remote Procedure Call 是一种进程间通信方式.它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个 ...
- Linux history显示时间/用户/ip的设置
在使用linux服务器的时候发生一些不知道谁操作的问题,google一下说history命令可以查看到历史记录,用过之后发现还是不够详细,再google,原来可以自己设置history的显示. 记录设 ...
- js查找字符串、js截取
js查找元素.js查找字符串 let index=data.indexOf(","); js截取.js截取字符串 $("#bankurl_id").val(da ...
- SSH(Spring Struts2 Hibernate)框架整合(xml版)
案例描述:使用SSH整合框架实现部门的添加功能 工程: Maven 数据库:Oracle 案例架构: 1.依赖jar包pom.xml <project xmlns="http://ma ...
- 构建MHA实现MySQL高可用集群架构
一.MHA简介 MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开 ...