题解
1.二分+dp
code
#include<bits/stdc++.h>
using namespace std;
string name[1000005],dp[1000005],st[1000005];
int main()
{
string s;
cin>>s;
int cnt=0;
for(int i=0;s[i];i++)
{
if(isupper(s[i])) name[++cnt]=s[i];
else name[cnt]+=s[i];//处理字符串
}
int len=0;
for(int i=1;i<=cnt;i++)
{
int pos=lower_bound(st+1,st+1+len,name[i])-st;//找到这个人在他包括他之前的位置
len=max(len,pos);
st[pos]=name[i];//name[i]要小于st[pos]
dp[pos]=dp[pos-1]+name[i];//dp
}
cout<<dp[len];
return 0;
}
标签:cnt,name,int,P8736,1000005,蓝桥,2020
From: https://www.cnblogs.com/pure4knowledge/p/18106121