zoukankan      html  css  js  c++  java
  • nico和niconiconi

    题意::"nico" 计 分,"niconi" 计 分,"niconiconi" 计 分。给一字符串问最大价值为多少。

    解法:dp【i】前 i 个字符最大价值。

    可得转移方程:

    (i >= 3 && sub(i-3 , i) == "nico")dp[i] = max(dp[i] , dp[i-3]+a)

    (i >= 5 && sub(i-5 , i) == "niconi")dp[i] = max(dp[i] , dp[i-5]+b)

    (i >= 9 && sub(i-9 , i) == "niconiconi")dp[i] = max(dp[i] , dp[i-9]+c)

    最后输出dp[n-1]即可。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll ;
    ll dp[300010];
     
    int main()
    {
        ll n , a , b , c ;
        cin >> n >> a >> b >> c ;
        string s;
        cin >> s;
        memset(dp , 0 , sizeof(dp));
        dp[0] = 0;
        for(int i = 1 ; i < n ; i++)
        {
            dp[i] = dp[i-1];
            if(i >= 3 && s.substr(i-3 , 4) == "nico") dp[i] = max(dp[i] , dp[i-3]+a);
            if(i >= 5 && s.substr(i-5 , 6) == "niconi") dp[i] = max(dp[i] , dp[i-5]+b);
            if(i >= 9 && s.substr(i-9 , 10) == "niconiconi") dp[i] = max(dp[i] , dp[i-9]+c);
        }
        cout << dp[n-1] << endl;
    }
    
  • 相关阅读:
    7. 输油管道问题
    6. 循环赛日程表
    4.JSP内置对象
    3.JSP
    2.CSS
    1.HTML
    5. 逆序对数
    [转]Android View.onMeasure方法的理解
    [转]android:clipToPadding和android:clipChildren
    [转]倍数提高工作效率的 Android Studio 奇技
  • 原文地址:https://www.cnblogs.com/nonames/p/12266413.html
Copyright © 2011-2022 走看看