AtCoder ABC 049 C - 白日梦 (DP写法)
题目传送门:Here
Description
提供由小写字符构成的长度N的字符串S。
请将S分割成几个连续的字符串,并判断这些字符串是否能够全部变成“dream”、“dreamer”、“erase”、“eraser”。
在这里试试DP。
DP[i]
然后转变可以如下。
dp[i - 5]
If = True andS[i-5:i]
= "dream",dp[i]
= Truedp[i-7]
If = True andS[i-7:i]
= "dreamer",dp[i]
= Truedp[i-5]
If = True andS[i-5:i]
= "erase",dp[i]
= Truedp[i-6]
If = True andS[i-6:i]
= "eraser",dp[i]
= True
时间复杂度:
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";
}
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)
2020-08-08 算法学习笔记:LCA问题
2020-08-08 在线算法、离线算法
2020-08-08 Codeforces 670C (离散化入门题)
2020-08-08 [kuangbin]专题九 连通图 题解+总结
2020-08-08 算法学习笔记:母函数详解
2020-08-08 0x62 图论-最小生成树