求优化
  • 板块灌水区
  • 楼主Mx_sky
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/5/10 08:16
  • 上次更新2023/10/23 16:12:30
查看原帖
求优化
713205
Mx_sky楼主2023/5/10 08:16

P9242
感觉是DP,NN有点大,O(N2)O(N^2)没过,大佬帮忙改改,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;
}
2023/5/10 08:16
加载中...