有几个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 ...
随机推荐
- 《剑指offer》连续子数组的最大和
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- delete web server(nginx+apache)
#!/bin/bash conf_dir1="/usr/local/nginx/conf/vhost.d" conf_dir2="/usr/local/apache2/c ...
- javascript 通过模块模式实现代码访问控制
<script type="text/javascript"> // 在匿名函数中使用var关键字 (function(){ var privateField = 42 ...
- MQTT服务器的搭建(Windows平台)
人工智能.智能家居越来越火,在服务器和多个终端进行通信的过程中使用传统的请求/回答(Request/Response)模式已经过时,伴随而来的是发布/订阅(Publish/Subscribe)模式-- ...
- 一起学爬虫——urllib库常用方法用法总结
1.读取cookies import http.cookiejar as cj,urllib.request as request cookie = cj.CookieJar() handler = ...
- 【Android】webview javascript 注入方法
Android中向webview注入js代码可以通过webview.loadUrl("javascript:xxx")来实现,然后就会执行javascript后面的代码. 但是当需 ...
- vue 解决IE不能用的问题
一般来说VUE本身是不支持IE的,但是可以用特殊的方法来解决,亲测可用第一步:下载插件 cnpm install --save babel-polyfill第二步:入口文件main.js引入( imp ...
- 习题集1a:研究方法入门
1.课程实践编号 课程实践编号 随着对习题集“PS 1a:研究方法入门”和其他习题集的了解,你可能会发现进度栏中的习题编号并非一直是连续的. 对于存在两个习题集的课程,如果一个习题集看上去“缺失”习题 ...
- 6101 最优贸易 (双向spfa)
描述C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的 ...
- PHP 验证身份证
function isCreditNo($vStr) { $vCity = array( '11','12','13','14','15','21','22', '23','31','32','33' ...