P9242
感觉是DP,N有点大,O(N2)没过,大佬帮忙改改,Code:
#include<bits/stdc++.h>
using namespace std;
const int mod=1000000000+9;
#define LL long long
int N,A[100003],B[100003],ans,dp[100003];
int main(){
scanf("%d",&N);
for(int i=1;i<=N;i++)
{
scanf("%d",&A[i]);
int w=log10(A[i]);
if(w==0) B[i]=A[i];
else B[i]=A[i]/(int(pow(10,w)));
A[i]=A[i]%10;
}
//B[i]首位,A[i]末位
dp[1]=1;
for(int i=1;i<=N;i++)
{
if(!dp[i]) dp[i]=1;
if(A[i]==0) {ans=max(ans,1);continue;}
for(int j=i+1;j<=N;j++)
if(B[j]==A[i]) dp[j]=max(dp[j],dp[i]+1);
ans=max(ans,dp[i]);
}
printf("%d\n",N-ans);
return 0;
}