[2020牛客寒假算法基础集训营1]I-nico和niconiconi

害。这题一开始我就没想到要咋做。原本想的是要暴力模拟。(蒟蒻流泪

但是根本无从下手呀。看了题解才发现是一个炒鸡炒鸡简单的DP题。暴力跑一边就好了。

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int maxn=3e5+20;
ll dp[maxn];
string str;

int main(){
    int n,a,b,c; cin>>n>>a>>b>>c;
    cin>>str;
    for(int i=1;i<n;i++){
        dp[i]=max(dp[i],dp[i-1]);
        if(i>=3&&str.substr(i-3,4)=="nico") dp[i]=max(dp[i],dp[i-3]+(ll)a);
        if(i>=5&&str.substr(i-5,6)=="niconi") dp[i]=max(dp[i],dp[i-5]+(ll)b);
        if(i>=9&&str.substr(i-9,10)=="niconiconi") dp[i]=max(dp[i],dp[i-9]+(ll)c);
    }
    printf("%lld
",dp[n-1]);
    return 0;
}
原文地址:https://www.cnblogs.com/Vikyanite/p/12273255.html