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

題目鏈接:

String Coloring (hard version)

題目解析:

根據 狄爾沃斯定理  這道題其實就是在求最長的遞減子序列

因爲只有26個字符,直接暴力就行

AC代碼:

#include<bits/stdc++.h>
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<<col<<endl;
    for(int i=1;i<=n;i++)
        cout<<ans[i]<<" ";
    return 0;
}

 

發佈了56 篇原創文章 · 獲贊 22 · 訪問量 6295
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章