zoukankan      html  css  js  c++  java
  • AtCoder ABC 049 C

    题目传送门:Here

    Description

    提供由小写字符构成的长度N的字符串S。
    请将S分割成几个连续的字符串,并判断这些字符串是否能够全部变成“dream”、“dreamer”、“erase”、“eraser”。
    $1le 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
    ";
        else cout << "NO
    ";
    }
    

    The desire of his soul is the prophecy of his fate
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    zookeeper的ACL权限控制
    Zookeeper客户端Curator基本API
    get和post的区别
    Html基本操作实例代码
    poj3322 Bloxorz I
    Delphi 调用SQL Server 2008存储过程
    架构设计师—你在哪层楼?
    LINUX常用命令
    分层自动化测试与传统自动化测试的差别
    商业智能漫谈
  • 原文地址:https://www.cnblogs.com/RioTian/p/15115072.html
Copyright © 2011-2022 走看看