【ACWing】1884. COW
题目地址:
https://www.acwing.com/problem/content/description/1886/
奶牛贝茜在她最喜欢的牧场中发现了一块石碑,上面刻有神秘的碑文。碑文的文字似乎来自一种神秘的古代语言,可看作一个只包含C,O,W
三种字符的字符串。尽管贝茜无法解密该文字,但是她很欣赏C,O,W
按顺序构成她最喜欢的单词COW
。她想知道COW
在碑文中一共出现了多少次。她不介意C,O,W
之间是否存在其他字符,只要这三个字符按正确的顺序出现即可。她也不介意多个不同的COW
是否共享了一些字符。例如,COW
在CWOW
中只出现一次,在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相关推荐
- 数的三次方根 【AcWing】
数的三次方根 [AcWing] 用二分查找算法求数的三次方根. C语言语法补充: 格式化 %lf , %f 用来输入输出浮点类型. %.6f用于确保结果小数点后留6位. #include<std ...
- 【AcWing】数位统计DP、树形DP、状态压缩DP、记忆化搜索
[AcWing]数位统计DP.树形DP.状态压缩DP.记忆化搜索 一.数位统计DP 二.状态压缩DP 三.树形DP 四.记忆化搜索 一.数位统计DP 计数问题 给定两个整数 a 和 b,求 a 和 b ...
- 【Acwing】第55场周赛 题解
第一题 AcWing 4479. 最长子序列 解题思路 : 这道题直接采用简单的哈希表或者是用一个数组进行记录:记录a数组中的数字是否在b数组中出现即可. 代码实现: #include <ios ...
- 【二分】Best Cow Fences(poj 2018)
Best Cow Fences poj 2018 题目大意: 给出一个正整数数列,要你求平均数最大,长度不小于M的字串,结果乘1000取整 输入样例 10 6 6 4 2 10 3 8 5 9 4 1 ...
- 【差分】Tallest Cow(poj 3263/luogu 2879)
Tallest Cow poj 3263 luogu 2879 题目大意: 现在有n头牛,两头牛如果要相互看到,那他们之间的牛必须比他们两低,现在给出n,最高牛的位置和高度,和m对关系,要你求每头牛最 ...
- 【ACWing】723. PUM
题目地址: https://www.acwing.com/problem/content/725/ 输入两个整数NNN和MMM,构造一个NNN行MMM列的数字矩阵,矩阵中的数字从第一行到最后一行,按从 ...
- 【题解】【AcWing】1526. 洗牌机
1526. 洗牌机 原题传送:AcWing 1526. 洗牌机 洗牌就是将一副牌的顺序打乱. 为了防止员工洗牌不够彻底或者员工串通赌徒出老千,许多娱乐场都用自动洗牌机来洗牌. 洗牌机会根据一套随机产生 ...
- 【ACWing】4246. 最短路径和
题目地址: https://www.acwing.com/problem/content/4249/ 给定一个nnn个点mmm条边的无重边无自环的有向图.点的编号1∼n1∼n1∼n.任意两点之间均可相 ...
- 【ACWing】487. 金明的预算方案
题目地址: https://www.acwing.com/problem/content/489/ 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是, ...
最新文章
- 打孔怎么定位_红米K40将要发布,采用居中打孔屏,极窄边框设计
- 口红竟超10000款,IT直男谁来拯救?(文末有惊吓)
- css flex属性学习笔记
- asp服务器组件安装包,ASP服务器组件
- 第6章 类型和成员基础
- PHP - 验证用户名
- [C++][基础]8_容器
- YUV转IPLImage(RGB)
- web安全:sql 注入
- Atitti 类库 开发者 常用 api 目录 1.1. Meta anno注解元数据api	1 1.2. Ref 反射api	1 1.3. Database meta api	1 1.4.
- 天池竞赛-金融风控-task1
- O2O、B2B、C2C(通俗讲解)
- 分享 | 基于图像分类网络ResNet50_vd实现桃子分类
- 吾爱破解 - https://www.52pojie.cn
- 解决硬盘自动休眠问题
- 基于ssm+shiro+activiti的办公自动化系统
- iPhone最强悍对抗者——HTC崛起的秘密 1
- 程序员的每一根头发珍贵稀少到都有自己的名字!
- 提问的艺术:如何通过提示词让 ChatGPT 更准确地理解你的问题?
- 提高记忆力的 10 种记忆技巧和工具