Codeforces Round #396 (Div. 2)Mahmoud and a Message

来源:互联网 发布:nginx 缓存设置 编辑:程序博客网 时间:2024/05/18 16:57
#include<stdio.h>#include<algorithm>#include<iostream>#include<string.h>#include<stdlib.h>#include<queue>#include<vector>#include<math.h>#include<stack>using namespace std;typedef long long ll;const int MAX = 1e3+10;const double eps = 1e-10;const double PI = acos(-1.0);const ll mod = 1e9+7;char s[MAX];int a[30], n;ll dp[MAX], num[MAX];bool check(int i, int j){    int len = j-i+1;    for(int k = i; k<=j; ++k)        if(a[s[k]-'a']<len)return 0;    return 1;}int main(){    int maxx;    cin>>n>>(s+1);    for(int i = 0; i<26; ++i)        cin>>a[i];    memset(dp, 0, sizeof(dp));    dp[0] = 1;    maxx = 1;    for(int i = 1; i<=n; ++i)    {        num[i] = mod;        for(int j = 0; j<i; ++j)        {            if(check(j+1, i))            {                dp[i] = (dp[i]+dp[j])%mod;                num[i] = min(num[i], num[j]+1);                maxx = max(maxx, i-j);            }        }    }    cout<<dp[n]<<endl<<maxx<<endl<<num[n]<<endl;    return 0;}

0 0
原创粉丝点击