1040. 有几个PAT(25)

时间限制
120 ms

内存限制
65536 kB

代码长度限制
8000 B

判题程序
Standard

作者
CAO, Peng

字符串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

题目链接:PAT 1040

题意简单就不多说了,反正看到这题感觉是用DP,因为看题目的意思又取余又计数的……然后想了一下,用dp[k][i]表示当前到i位置时收集到了P(0)、PA(1)、PAT(2)三个字符的个数。

然后感觉应该有这样的递推式:

dp[0][i] = (dp[0][i - 1] + 1) % mod;
dp[1][i] = (dp[1][i] + dp[0][i - 1]) % mod;
dp[2][i] = (dp[2][i] + dp[1][i - 1]) % mod;

然后交了一发居然过了,不知道是数据弱还是这个递推式没有问题……

代码:

#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define LC(x) (x<<1)
#define RC(x) ((x<<1)+1)
#define MID(x,y) ((x+y)>>1)
#define CLR(arr,val) memset(arr,val,sizeof(arr))
#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);
typedef pair<int, int> pii;
typedef long long LL;
const double PI = acos(-1.0);
const int N = 1e5 + 7;
const int mod = 1000000007;
char s[N];
int dp[3][N]; int main(void)
{
int i, len;
while (~scanf("%s", s + 1))
{
CLR(dp, 0);
len = strlen(s + 1); for (i = 1; i <= len; ++i)
{
dp[0][i] = dp[0][i - 1];
dp[1][i] = dp[1][i - 1];
dp[2][i] = dp[2][i - 1];
if (s[i] == 'P')
dp[0][i] = (dp[0][i - 1] + 1) % mod;
else if (s[i] == 'A')
dp[1][i] = (dp[1][i] + dp[0][i - 1]) % mod;
else if (s[i] == 'T')
dp[2][i] = (dp[2][i] + dp[1][i - 1]) % mod;
}
printf("%d\n", dp[2][len]);
}
return 0;
}

最新文章

  1. testlink部署与迁移
  2. Linux:安装rstatd,报错
  3. pgpool介绍和安装经验
  4. 多态-II(接口实现)
  5. mariadb数据库备份学习笔记
  6. DevExpress控件使用经验总结
  7. Documentation | AnsibleWorks
  8. UVa 10397 Connect the Campus
  9. [Node.js框架] 为什么要开发 Codekart 框架
  10. .NET WinForm程序中给DataGridView表头添加下拉列表实现数据过滤
  11. ajax-jquery方法-初步入门01(整理)
  12. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
  13. SVN:多版本库环境的搭建
  14. irc
  15. AOP 实现自定义注解
  16. 【JVM】4、JVM类加载机制
  17. JavaScript开源跨平台框架NativeScript
  18. snapshot相关
  19. JUC——延迟队列
  20. jenkins + jacoco 单元测试覆盖率

热门文章

  1. 《C++ 101条建议》学习笔记——第一章快速入门
  2. word20161211
  3. bzoj1023: [SHOI2008]cactus仙人掌图
  4. 2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合
  5. VS2013无法连接到SqlServer的问题解决
  6. 【YEOMAN】执行yo命令,报EACCES: permission denied, mkdir &#39;/root/.config/configstore&#39;
  7. 【Junit 报错】Test class should have exactly one public zero-argument constructor和Test class can only have one constructor
  8. XD, XR, DR 股票
  9. Android自动化测试 - Robotium之re-sign.jar重签名后安装失败提示Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]解决方案
  10. LightOJ1171 Knights in Chessboard (II)(二分图最大点独立集)