题目地址:

https://www.acwing.com/problem/content/description/1886/

奶牛贝茜在她最喜欢的牧场中发现了一块石碑,上面刻有神秘的碑文。碑文的文字似乎来自一种神秘的古代语言,可看作一个只包含C,O,W三种字符的字符串。尽管贝茜无法解密该文字,但是她很欣赏C,O,W按顺序构成她最喜欢的单词COW。她想知道COW在碑文中一共出现了多少次。她不介意C,O,W之间是否存在其他字符,只要这三个字符按正确的顺序出现即可。她也不介意多个不同的COW是否共享了一些字符。例如,COWCWOW中只出现一次,在CCOW中出现两次,在CCOOWW中出现八次。

给定碑文中的文字,请帮助贝茜计算COW出现的次数。

输入格式:
第一行包含NNN。

第二行包含一个长度为NNN的字符串,其中只包含字符C,O,W

输出格式:
输出给定字符串中COW作为子序列(不一定连续)的出现次数。

数据范围:
1≤N≤1051≤N≤10^51≤N≤105

设f[n][k]f[n][k]f[n][k]为是字符串sss的前nnn个字母里,COW的前k+1k+1k+1个字母的前缀作为子序列的出现次数。那么,如果s[n]=′C′s[n]='C's[n]=′C′,则f[n][0]=f[n−1][0]+1f[n][0]=f[n-1][0]+1f[n][0]=f[n−1][0]+1;如果s[n]=′O′s[n]='O's[n]=′O′,则f[n][1]=f[n−1][1]+f[n−1][0]f[n][1]=f[n-1][1]+f[n-1][0]f[n][1]=f[n−1][1]+f[n−1][0];如果s[n]=′W′s[n]='W's[n]=′W′,则f[n][2]=f[n−1][2]+f[n−1][1]f[n][2]=f[n-1][2]+f[n-1][1]f[n][2]=f[n−1][2]+f[n−1][1]。由这些递推式,可以在程序中用三个变量记录f[n][0,1,2]f[n][0,1,2]f[n][0,1,2],然后一路递推过去即可。代码如下:

#include <iostream>
using namespace std;long n, f[3];
string s;int main() {scanf("%ld", &n);cin >> s;for (auto &ch : s) {if (ch == 'C') f[0]++;else if (ch == 'O') f[1] += f[0];else f[2] += f[1];}printf("%ld\n", f[2]);return 0;
}

时间复杂度O(n)O(n)O(n),空间O(1)O(1)O(1)。

【ACWing】1884. COW相关推荐

  1. 数的三次方根 【AcWing】

    数的三次方根 [AcWing] 用二分查找算法求数的三次方根. C语言语法补充: 格式化 %lf , %f 用来输入输出浮点类型. %.6f用于确保结果小数点后留6位. #include<std ...

  2. 【AcWing】数位统计DP、树形DP、状态压缩DP、记忆化搜索

    [AcWing]数位统计DP.树形DP.状态压缩DP.记忆化搜索 一.数位统计DP 二.状态压缩DP 三.树形DP 四.记忆化搜索 一.数位统计DP 计数问题 给定两个整数 a 和 b,求 a 和 b ...

  3. 【Acwing】第55场周赛 题解

    第一题 AcWing 4479. 最长子序列 解题思路 : 这道题直接采用简单的哈希表或者是用一个数组进行记录:记录a数组中的数字是否在b数组中出现即可. 代码实现: #include <ios ...

  4. 【二分】Best Cow Fences(poj 2018)

    Best Cow Fences poj 2018 题目大意: 给出一个正整数数列,要你求平均数最大,长度不小于M的字串,结果乘1000取整 输入样例 10 6 6 4 2 10 3 8 5 9 4 1 ...

  5. 【差分】Tallest Cow(poj 3263/luogu 2879)

    Tallest Cow poj 3263 luogu 2879 题目大意: 现在有n头牛,两头牛如果要相互看到,那他们之间的牛必须比他们两低,现在给出n,最高牛的位置和高度,和m对关系,要你求每头牛最 ...

  6. 【ACWing】723. PUM

    题目地址: https://www.acwing.com/problem/content/725/ 输入两个整数NNN和MMM,构造一个NNN行MMM列的数字矩阵,矩阵中的数字从第一行到最后一行,按从 ...

  7. 【题解】【AcWing】1526. 洗牌机

    1526. 洗牌机 原题传送:AcWing 1526. 洗牌机 洗牌就是将一副牌的顺序打乱. 为了防止员工洗牌不够彻底或者员工串通赌徒出老千,许多娱乐场都用自动洗牌机来洗牌. 洗牌机会根据一套随机产生 ...

  8. 【ACWing】4246. 最短路径和

    题目地址: https://www.acwing.com/problem/content/4249/ 给定一个nnn个点mmm条边的无重边无自环的有向图.点的编号1∼n1∼n1∼n.任意两点之间均可相 ...

  9. 【ACWing】487. 金明的预算方案

    题目地址: https://www.acwing.com/problem/content/489/ 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是, ...

最新文章

  1. 打孔怎么定位_红米K40将要发布,采用居中打孔屏,极窄边框设计
  2. 口红竟超10000款,IT直男谁来拯救?(文末有惊吓)
  3. css flex属性学习笔记
  4. asp服务器组件安装包,ASP服务器组件
  5. 第6章 类型和成员基础
  6. PHP - 验证用户名
  7. [C++][基础]8_容器
  8. YUV转IPLImage(RGB)
  9. web安全:sql 注入
  10. Atitti 类库 开发者 常用 api 目录 1.1. Meta anno注解元数据api 1 1.2. Ref 反射api 1 1.3. Database meta api 1 1.4.
  11. 天池竞赛-金融风控-task1
  12. O2O、B2B、C2C(通俗讲解)
  13. 分享 | 基于图像分类网络ResNet50_vd实现桃子分类
  14. 吾爱破解 - https://www.52pojie.cn
  15. 解决硬盘自动休眠问题
  16. 基于ssm+shiro+activiti的办公自动化系统
  17. iPhone最强悍对抗者——HTC崛起的秘密 1
  18. 程序员的每一根头发珍贵稀少到都有自己的名字!
  19. 提问的艺术:如何通过提示词让 ChatGPT 更准确地理解你的问题?
  20. 提高记忆力的 10 种记忆技巧和工具

热门文章

  1. 微盛·企微管家针对不同行业营销痛点提供解决方案
  2. 计算机考研视频谁的好处,谁的计算机专业考研视频好
  3. java webclient_java使用WebClient获取不到重定向的网页信息
  4. 分布式存储系统:4.容错
  5. Linux开机引导与关机过程
  6. 闪电盒子App产品体验报告
  7. 温控器手动模式与自动模式c语言编写,智能节能温控器及其使用方法
  8. 为什么增加解释变量的个数,R^2不会减小,该如何证明
  9. PMP学员:项目管理的重要性
  10. twitter图片视频批量下载