题目传送门:Here

Description

提供由小写字符构成的长度N的字符串S。

请将S分割成几个连续的字符串,并判断这些字符串是否能够全部变成“dream”、“dreamer”、“erase”、“eraser”。


$1\le N \le 10^5$

在这里试试DP。

DP[i] \(\leftarrow\)​ 对于字符串S的第一个 \(i\) 个字符,是否可以按满足条件进行区间分割

然后转变可以如下。

  • dp[i - 5] If = True and S[i-5:i]= "dream", dp[i]= True
  • dp[i-7]If = True and S[i-7:i]= "dreamer", dp[i]= True
  • dp[i-5]If = True and S[i-5:i]= "erase", dp[i]= True
  • dp[i-6]If = True and S[i-6:i]= "eraser", dp[i]= True

时间复杂度:\(\mathcal{O}(N)\)

vector<string> strs = {"dream", "dreamer", "erase", "eraser"};
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
string s; cin >> s;
vector<bool>dp(s.size() + 1, false);
dp[0] = true;
for (int i = 1; i <= s.size(); ++i) {
for (auto str : strs) {
if (i >= str.size() &&
dp[i - str.size()] &&
s.substr(i - str.size(), str.size()) == str)
dp[i] = true;
}
}
if (dp[s.size()]) cout << "YES\n";
else cout << "NO\n";
}

AtCoder ABC 049 C - 白日梦 (DP写法)的更多相关文章

  1. [题解] Atcoder ABC 213 H Stroll DP,分治FFT

    题目 令\(dp_{i,j}\)表示从点1到达点i,路径长度为j的方案数.转移为\(dp_{i,j}=\sum_{(i,v,w)\in E}dp_{v,j-w}p_{i,v,w}\). 显然只能从长度 ...

  2. AtCoder ABC 250 总结

    AtCoder ABC 250 总结 总体 连续若干次一样的结果:30min 切前 4 题,剩下卡在 T5 这几次卡在 T5 都是一次比一次接近, 什么 dp 前缀和打挂,精度被卡,能水过的题连水法都 ...

  3. AtCoder ABC 242 题解

    AtCoder ABC 242 题解 A T-shirt 排名前 \(A\) 可得 T-shirt 排名 \([A+1,B]\) 中随机选 \(C\) 个得 T-shirt 给出排名 \(X\) ,求 ...

  4. ATCODER ABC 099

    ATCODER ABC 099 记录一下自己第一场AK的比赛吧...虽然还是被各种踩... 只能说ABC确实是比较容易. A 题目大意 给你一个数(1~1999),让你判断它是不是大于999. Sol ...

  5. Atcoder ABC 141

    Atcoder ABC 141 A - Weather Prediction SB题啊,不讲. #include<iostream> #include<cstdio> #inc ...

  6. Atcoder ABC 139E

    Atcoder ABC 139E 题意: n支球队大循环赛,每支队伍一天只能打一场,求最少几天能打完. 解法: 考虑抽象图论模型,既然一天只能打一场,那么就把每一支球队和它需要交手的球队连边. 求出拓 ...

  7. Atcoder ABC 139D

    Atcoder ABC 139D 解法: 等差数列求和公式,记得开 $ long long $ CODE: #include<iostream> #include<cstdio> ...

  8. Atcoder ABC 139C

    Atcoder ABC 139C 题意: 有 $ n $ 个正方形,选择一个起始位置,使得从这个位置向右的小于等于这个正方形的高度的数量最多. 解法: 简单递推. CODE: #include< ...

  9. Atcoder ABC 139B

    Atcoder ABC 139B 题意: 一开始有1个插口,你的插排有 $ a $ 个插口,你需要 $ b $ 个插口,问你最少需要多少个插排. 解法: 暴力模拟. CODE: #include< ...

  10. Atcoder ABC 139A

    Atcoder ABC 139A 题意: 给你两个字符串,记录对应位置字符相同的个数 $ (n=3) $ 解法: 暴力枚举. CODE: #include<iostream> #inclu ...

随机推荐

  1. 多项目git账户用户名和邮箱设置以及局部github代理

    因为公司使用自建的gitlab服务器所以需要配置两个git账户分别用来访问公司仓库和自己的github仓库. 前言: 首先给大家梳理一下多用户名或者说多邮箱使用git的理解误区.我们需要知道的是我们的 ...

  2. vscode设置将英文界面设置为中文?

    如果您希望将 Visual Studio Code(以下简称VSCode)的界面从英文设置为中文,可以按照以下步骤进行: 打开 VSCode 编辑器,并进入"扩展"菜单. 在搜索框 ...

  3. 城院导航小程序软件需求规范(SRS)(三期作业汇总)

    城院导航小程序软件需求规范(SRS) 1. 引言 1.1 目的 小帅小美们注意看!! 公主请批阅! 王子请批阅! 本文档描述了城院导航小程序的功能和非功能需求.它旨在为开发团队.导师和利益相关者提供清 ...

  4. 耗时三年开源的H5商城,生产级代码实战

    waynboot-mall 商城项目是我从疫情开始初期着手准备开发的,到如今 2023 年底,已经过了 3 年多的时间. 从项目初期到现在,一个人持续迭代,修复漏洞,添加功能,经历了前端开发工具从 v ...

  5. 解决JPA对查询对象set属性值导致数据更新的问题

    问题描述 1.开启了数据库事务 2.通过EntityManager执行查询,获得返回对象 3.代码业务逻辑处理,其中有对象set属性值的操作 4.没有执行过JPA的save方法或者update语句 5 ...

  6. jvm总结图解

    浅析jvm  内存模型 https://www.cnblogs.com/lewis0077/p/5143268.html

  7. gridlayout

    <?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android=" ...

  8. PTA 函数与递归部分题目讲解及思路

    7-1 判断素数 题目分析 题目输入n个数,判断其是否为质数 对于判断质数,只需要满足从2开始遍历的每一个数一直到√n均无法被n整除即可 关于为什么只要到√n呢? 因为n = √n * √n,因此其最 ...

  9. Scrapy-CrawlSpider爬虫类使用案例

    CrawlSpider类型的爬虫会根据指定的rules规则自动找到url比自动爬取. 优点:适合整站爬取,自动翻页爬取 缺点:比较难以通过meta传参,只适合一个页面就能拿完数据的. import s ...

  10. 数字孪生和GIS的融合能够为智慧水务带来什么帮助?

    数字孪生和地理信息系统(GIS)的融合在智慧水务领域有着重要的应用前景.让我们一起探讨数字孪生和GIS如何合作,为智慧水务系统带来了哪些帮助. GIS系统提供了准确的地理数据,包括水资源.管道网络.水 ...