笔试训练48天:mari和shiny(动态规划 - 线性dp)

链接:https://ac.nowcoder.com/acm/problem/26226

来源:牛客网

题号:NC26226

时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒

空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M

64bit IO Format: %lld

题目描述

mari每天都非常shiny。她的目标是把正能量传达到世界的每个角落!

有一天,她得到了一个仅由小写字母组成的字符串。

她想知道,这个字符串有多少个"shy"的子序列?

(所谓子序列的含义见样例说明)

输入描述:

复制代码
第一行一个正整数n,代表字符串的长度。(1≤n≤300000)
第二行为一个长度为n,仅由小写字母组成的字符串。

输出描述:

复制代码
一个正整数,代表子序列"shy"的数量。

示例1

输入

复制代码
8
sshhyyau

输出:

8

说明:假设字符串下标从1到8。共有(135)(136)(145)(146)(235)(236)(245)(246)八个"shy"子序列。

备注:mari大喊道:"是shiny不是shy!!!"

思路动态规划

①:状态表示:si表示:字符串str中0,i区间内有多少个's';

hi:表示0,i区间有多少个'sh';

yi:表示0,i区间有多少个'shy'

②状态转移方程:

③空间优化

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;
int n;
string str;

int main()
{
    cin>>n>>str;
    long long s=0,h=0,y=0; 
    for(int i=0;i<n;i++)
    {
        char ch=str[i];
        if(ch=='s')s++;
        else if (ch=='h')h+=s;
        else if(ch=='y')y+=h;
    }
    cout<<y<<endl;
    return 0;
}
相关推荐
大鱼>5 分钟前
宠物监控数据安全与隐私保护:端到端加密与合规实践
人工智能·深度学习·算法·iot·宠物
被自己蠢哭11 分钟前
BFS广度优先搜索问题:#P00496. 华为od机试—自动泊车
算法
:-)12 分钟前
分支限界算法
算法
小肝一下31 分钟前
2. 顺序表和链表
c语言·数据结构·c++·链表·dijkstra·依蕾娜·香香的依蕾娜
j7~35 分钟前
【数据结构初阶】带头双向循环链表 (DSList) --增删查改完整实现详解
c语言·数据结构·链表·带头双向循环链表
大鱼>1 小时前
宠物行为识别AI算法详解:从数据采集到模型部署的完整方案
人工智能·深度学习·算法·宠物
石像鬼₧魂石1 小时前
贵州商会管理系统 —— 商协会数字化运营一站式平台
大数据·数据结构·物联网·eclipse·数据库架构
王莎莎-MinerU1 小时前
解析回归集:RAG 和 Agent 上线前,先把表格、公式、版面测清楚
人工智能·算法·数据挖掘·回归·pdf·ocr
Java面试题总结1 小时前
区间树:反向映射的前置数据结构
java·前端·数据结构
KaMeidebaby1 小时前
卡梅德生物技术快报|兔单克隆抗体:噬菌体 Fab 免疫文库搭建实操:兔单克隆抗体重组构建完整参数
前端·网络·数据库·人工智能·算法