寒假刷题18:E2 - String Coloring (hard version)

题目链接:

String Coloring (hard version)

题目解析:

根据 狄尔沃斯定理  这道题其实就是在求最长的递减子序列

因为只有26个字符,直接暴力就行

AC代码:

#include
using namespace std;
int n,a[200003],maxx[200],maxxx=0,ans[200003],col;
char c;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        cin>>c;
        a[i]=c-'a'+1,maxxx=0;
        for(int j=a[i]+1;j<=26;j++)
            maxxx=max(maxxx,maxx[j]);
        ans[i]=maxxx+1,col=max(col,ans[i]);
        maxx[a[i]]=max(maxx[a[i]],maxxx+1);
    }
    cout<

 

你可能感兴趣的:(寒假刷题18:E2 - String Coloring (hard version))