zoukankan      html  css  js  c++  java
  • 七夕——永远在一起(一维dp)

    永远在一起

    题目链接:https://ac.nowcoder.com/acm/contest/18962/I

    题目描述:给定一个只有'W'、'F'、'?'三种字符组成偶数长字符串,'?'可以当做任意字符。统计其中有多少对'WF'、'FW'构成的子串。

    某人:“I题以前也遇到过。”

    “当时好像写了很久最后多了一个测试代码没注释,没过,印象深刻。”

    “不对,I题优化上应该还得用二维DP。”

    “如果连续没有'?',只要不中断就是+1+2+3这种递增,中断了就是回到1。”

    “遇到?分情况讨论。”

    然后,然后,很明显就WA掉了,题目判断跑偏但没有完全跑偏。测试数据case0%...

      AC代码:

    #include <iostream>
    using namespace std;
    
    const int N = 200010;
    int f[N][2];
    string s;
    
    int main()
    {
        cin >> s;
        for(int i = 0; i < s.size(); i++)
        {
            if(s[i] == '?'){
                f[i][1] = f[i - 1][0] + 1;
                f[i][0] = f[i - 1][1] + 1;
            }
            else if(s[i] == 'W'){
                f[i][0] = f[i - 1][1] + 1;
            }
            else{
                f[i][1] = f[i - 1][0] + 1;
            }
        }
        long long res = 0;
        for(int i = 0; i < s.size(); i++)
            res += max(f[i][0], f[i][1]) / 2;
        cout << res << endl;
        return 0;
    }
    

      这算是DP入门吧。

  • 相关阅读:
    03-spring bean
    04-spring的依赖注入
    01-课程安排
    17-注解开发
    WIN10新机必要设置记录 for 3dsmax
    ps导出svg
    VS C# 共享项目
    在Maxscript中创建.Net类型
    C# 自定义索引
    C# ?
  • 原文地址:https://www.cnblogs.com/thx2199/p/15145705.html
Copyright © 2011-2022 走看看