样例通过,RE求助
查看原帖
样例通过,RE求助
436102
nod1212楼主2022/7/29 16:33

有哪位dalao知道-1073741819是什么错呀?

code:

#include<bits/stdc++.h>
#include<cstring>
using namespace std;
int a,b;
vector<string> jig;
vector<string> tem;
string outt;
set<string> all;
int ans,ansx,ansy;
void least(int xx,int yy){
	string outt2="";
	outt="";
	//cout<<"aaa";
	for(int i=0;i<xx;i++){
		outt=outt+tem[i];
	}
	//cout<<outt<<"kkk";
	if(xx==yy){
		vector<string> tem2,tem3,tem4;
		for(int i=1;i<=30;i++){
			tem2.push_back("");
			tem3.push_back("");
			tem4.push_back("");
		}
		for(int i=0;i<xx;i++){
			for(int j=0;j<yy;j++){
				tem2[i][j]=tem[yy-j-1][i];
			}
		}
		outt2="";
		for(int i=0;i<xx;i++){
			for(int j=0;j<yy;j++){
				outt2.insert(outt2.end(),tem2[i][j]);
			}
		}
		//cout<<outt2<<"kkk";
		if(outt2<outt){
			outt=outt2;
		}
		outt2="";
		for(int i=0;i<xx;i++){
			for(int j=0;j<yy;j++){
				tem3[i][j]=tem2[yy-j-1][i];
			}
		}
		for(int i=0;i<xx;i++){
			for(int j=0;j<yy;j++){
				tem4[i][j]=tem3[yy-j-1][i];
			}
		}
		outt2="";
		for(int i=0;i<xx;i++){
			for(int j=0;j<yy;j++){
				outt2.insert(outt2.end(),tem4[i][j]);
			}
		}
		if(outt2<outt){
			outt=outt2;
		}
	}
	outt2="";
	for(int i=0;i<xx>>1;i++){
		swap(tem[xx-i-1],tem[i]);
	}
	for(int i=0;i<xx;i++){
		string t(tem[i].rbegin(),tem[i].rend());
		tem[i]=t;
	}
	for(int i=0;i<xx;i++){
		outt2=outt2+=tem[i];
	}
	if(outt2<outt){
		outt=outt2;
	}
	return;
}
int main(){
	cin>>a>>b;
	getchar();
	ans=0;
	ansx=ansy=114514;
	string tempt;
	for(int i=1;i<=a;i++){
		getline(cin,tempt,'\n');
		jig.push_back(tempt);
	}
	for(int x=1;x<=a;x++){
		for(int y=1;y<=b;y++){
			if(a%x||b%y){
				continue;
			}
			else{
				all.clear();
				bool flag=false; 
				for(int i=0;i<a;i+=x){
					for(int j=0;j<b;j+=y){
						tem.clear();
						//cout<<x<<" "<<y<<" "<<i<<" "<<j<<endl;
						for(int k=i;k<i+x;k++){
                            tem.push_back(jig[k]);
                            tem[k-i].erase(0,j);
                            tem[k-i].erase(y,b-y);
                            //cout<<tem[k-i]<<endl;
						}
						least(x,y);
						//cout<<x<<" "<<y<<" "<<i<<" "<<j<<" "<<outt<<endl;
						if(all.count(outt)>0){
                            flag=true;
                            //cout<<"kkk"<<all.count(outt)<<"kkk"<<endl;
                            break;
						}
						else{
                            all.insert(outt);
						}
						if(flag){
							break;
						}
					}
					if(flag){
						break;
					}
				}
				if(!flag)
				{
					ans++;
					if(x*y==ansx*ansy){
	                    if(x<ansx){
	                        ansx=x;
	                        ansy=y;
	                    }
					}
					if(x*y<ansx*ansy){
	                    ansx=x;
	                    ansy=y;
					}
				}
			}
		}
	}
	cout<<ans<<endl;
	cout<<ansx<<" "<<ansy;
	return 0;
}

(可能是vector爆了?

2022/7/29 16:33
加载中...