60分求调
查看原帖
60分求调
1434846
ACs_King楼主2025/7/31 17:48
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5;
int main(){
	int n,m,a[N],b[N];
	vector<int> t[N];
	cin>>n>>m;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=n;i++){
		memset(b,0,sizeof(b));//初始化一下,记录一下其他文件在这个文件存在没有
		if(t[a[i]].size()>0) t[a[i]].clear();//如果文件存在就清空
		for(int j=1;j<=i;j++){//把之前出现过的记录一下
			if(b[a[j]]==1) continue;//存在过就跳过
			t[a[i]].push_back(a[j]);//记录
			b[a[j]]=1;//做个标记
		}
	}
	for(int i=1;i<=m;i++){
		int ans=0;//记录答案
		for(int j=0;j<t[i].size();j++){
			while(t[i][j]) t[i][j]/=10,ans++;
			//这个数字是几位,长度就加几
			ans++;//记录空格
		}
		printf("%d ",--ans);//后面会多加一个空格,所以要减去
	}
    return 0;
}

此代码就是时间复杂度太高,是n的平方,求调!!!必关

2025/7/31 17:48
加载中...