PAT (Advanced Level) 1093. Count PAT's (25) 一维动态规划
2015-07-31 15:26
351 查看
The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and the 6th characters, and the second one is formed by the 3rd, the 4th, and the 6th characters.
Now given any string, you are supposed to tell the number of PAT's contained in the string.
Input Specification:
Each input file contains one test case. For each case, there is only one line giving a string of no more than 105characters containing only P, A, or T.
Output Specification:
For each test case, print in one line the number of PAT's contained in the string. Since the result may be a huge number, you only have to output the result moded by 1000000007.
Sample Input:
Sample Output:
Now given any string, you are supposed to tell the number of PAT's contained in the string.
Input Specification:
Each input file contains one test case. For each case, there is only one line giving a string of no more than 105characters containing only P, A, or T.
Output Specification:
For each test case, print in one line the number of PAT's contained in the string. Since the result may be a huge number, you only have to output the result moded by 1000000007.
Sample Input:
APPAPT
Sample Output:
2
计算有多少对PAT,只要一遍扫描即可,O(N)。用一个变量记录当前位置之前有多少对PA,这样遇到T的时候前面的PA数目就是新增的PAT数目。由于遇到A的时候PA的数目可能会增加,还需要用一个变量记录当前位置之前有多少个P,遇到A的时候前面P的数目就是新增的PA数目。
用long long记录总数避免溢出。/*2015.7.31cyq*/ #include <iostream> #include <vector> #include <string> using namespace std; int main(){ string s; cin>>s; long long count=0;//总PAT数 int PA=0; //前面的PA数目 int P=0; //前面的P数目 int n=s.size(); for(int i=0;i<n;i++){ if(s[i]=='T') count+=PA; else if(s[i]=='A') PA+=P; else if(s[i]=='P') P++; } cout<<count%1000000007; return 0; }
相关文章推荐
- TCP/IP学习(四)TCP缓冲区大小及限制
- css3画圆
- HBase - Rowkey 设计 | 那伊抹微笑
- web.xml中load-on-startup的作用
- 椭圆拟合算法总结
- 项目管理经验总结
- Transfrom在64bit服务下面无法运行
- 第一次用IIS发布网站时遇到的两个问题
- requireJs详解(二)
- SpringMvc下载excel文件
- C#里边的控件缩写大全
- 《汇编语言》第二版 王爽著 第四章 第一个程序 要点
- GridView(实现表格显示图标)
- C_动态内存分配,malloc/free
- OpenWrt配置绿联的usb转Ethernet网口驱动
- 免输密码的登录功能的实现——MD5加盐
- nginx的worker进程挂起且某个CPU负载达到100%
- 纯css3实现图片等比例缩放+全屏居中
- python数据结构与算法——冒泡排序
- Redis学习笔记