关于开o2就MLE
查看原帖
关于开o2就MLE
544372
Nagligivaget楼主2024/8/28 21:55

我的代码开了o2后就MLE(难不成这代码是厌氧型),有哪位大佬能告诉我是这是为什么

#include<bits/stdc++.h>
using namespace std;
string n;
int k=0,l=1,fi[10];
bool zu[10][10];
vector<int>ans;
int gj(int a){
	int x=0;
	for(int i=0;i<l;i++){
		ans[i]=ans[i]*a+x;
		x=ans[i]/10;
		ans[i]%=10;
	}
	while(x){
		ans.push_back(x%10);
		x/=10;
		l++;
	}
}
void floyd(){
	for(int k=0;k<=9;k++){
		for(int i=0;i<=9;i++){
			for(int j=0;j<=9;j++){
				zu[i][j]=(zu[i][k]&&zu[k][j])||zu[i][j];
			}
		}
	}
}
void ParseIn(){
	cin>>n>>k;
	for(int i=0;i<k;i++){
		int pi=0,qi=0;
		cin>>pi>>qi;
		zu[pi][qi]=true;
	}
}
void Core(){
	for(int i=0;i<=9;i++){
		zu[i][i]=true;
	}
	floyd();
	for(int i=0;i<=9;i++){
		fi[i]=count(zu[i],zu[i]+10,1);
	}
	for(int i=0;i<n.size();i++){
		gj(fi[n[i]-'0']);
	}
}
void WriteOut(){
	for(int i=l-1;i>=0;i--){
		cout<<ans[i];
	}
}
int main(){
	//freopen("产生数.in","r",stdin);
	//freopen("产生数.out","w",stdout);
	ans.push_back(1);
	ParseIn();
	Core();
	WriteOut();
	return 0;
}
2024/8/28 21:55
加载中...