博客
关于我
1093 Count PAT‘s (25分) 含DP做法
阅读量:376 次
发布时间:2019-03-05

本文共 1694 字,大约阅读时间需要 5 分钟。

1093 Count PAT’s (25分)

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 10 ^ ​5 characters 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

方法一:题目意思就是找出一个A左边的P个数*右边的T,构造两个数组分别存储在字符串i位置左边P的个数和右边T的个数,然后遍历字符串将合理位置的两个数组的数乘起来相加即可,不要忘了最后模1000000007,设字符串长度N ,整个复杂度就是遍历了三遍字符串所以还是O(N)的,不会超时。这种做法比较直接,也比较容易想到

AC代码

#include
#include
#include
using namespace std;#define N 1000000007typedef long long LL;string m;int main(){ LL res=0; cin >> m; vector
a(m.size(),0); vector
b(m.size(),0); for(int i=1;i
=0;i--) if(m[i+1]=='T') b[i]=b[i+1]+1; else b[i]=b[i+1]; for(int i=0;i

方法二:DP

#include
#include
#include
using namespace std;#define N 1000000007char s[100010],p[]=" PAT";int f[100010][4];int main(){ cin >> s+1; int n=strlen(s+1); f[0][0]=1; for(int i=1;i<=n;i++) for(int j=0;j<=3;j++) { f[i][j]=f[i-1][j]; if(s[i]==p[j]) f[i][j]=(f[i][j]+f[i-1][j-1])%N; } cout << f[n][3]; return 0;}

转载地址:http://azbwz.baihongyu.com/

你可能感兴趣的文章
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
查看>>
Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
查看>>
Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题
查看>>
Mysql学习总结(63)——Mysql数据库架构方案选择与分析
查看>>
Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
查看>>
Mysql学习总结(65)——项目实战中常用SQL实践总结
查看>>
Mysql学习总结(66)——设置MYSQL数据库编码为UTF-8
查看>>
Mysql学习总结(67)——MYSQL慢查询日志
查看>>
Mysql学习总结(68)——MYSQL统计每天、每周、每月、每年数据 SQL 总结
查看>>
Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
查看>>
Mysql学习总结(6)——MySql之ALTER命令用法详细解读
查看>>
Mysql学习总结(70)——MySQL 优化实施方案
查看>>
Mysql学习总结(71)——MySQL 重复记录查询与删除总结
查看>>
Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
查看>>
Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
查看>>
Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结
查看>>
Mysql学习总结(77)——温故Mysql数据库开发核心原则与规范
查看>>
Mysql学习总结(78)——MySQL各版本差异整理
查看>>
Mysql学习总结(79)——MySQL常用函数总结
查看>>
Mysql学习总结(7)——MySql索引原理与使用大全
查看>>