QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#179422#7051. Largest Common SubmatrixlinninsML 0ms0kbC++201.6kb2023-09-14 21:18:382023-09-14 21:18:39

Judging History

你现在查看的是最新测评结果

  • [2023-09-14 21:18:39]
  • 评测
  • 测评结果:ML
  • 用时:0ms
  • 内存:0kb
  • [2023-09-14 21:18:38]
  • 提交

answer

#include<cstdio>
#include<algorithm>
using namespace std;

struct Node{
	int x,y;
}Mapping[1000];

int Map[1050][1050];
int Color[1050][1050];
//int cal[1050][1050];
//int L[1050],R[1050];
int flag = 1;
int n,m;
//
//void findheight(int x,int y){
//	if(Color[x][y] == Color[x-1][y]){
//		cal[x][y] = cal[x-1][y]+1;
//	}
//	else{
//		cal[x][y] = 1;
//	}
//}
//
//int find(int x,int y){
//
//	while(cal[x][L[y]-1]>=cal[x][y] and Color[x][L[y] - 1] == Color[x][y]) L[y] = L[y] - 1;
//	while(cal[x][R[y]+1]>=cal[x][y] and Color[x][R[y] + 1] == Color[x][y]) R[y] = R[y] + 1;
//	return (R[y] - L[y] + 1)*cal[x][y];
//}

int fillcolor(int x,int y){
	if(Color[x][y] == 0)
		Color[x][y] = flag++;
//	if(Map[x][y] == Map[x-1][y] + m)
//		Color[x-1][y] = Color[x][y];
//	if(Map[x][y] == Map[x][y-1] + 1)
//		Color[x][y-1] = Color[x][y];
}

int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%d",&Map[i][j]);
			Mapping[Map[i][j]].x = i;
			Mapping[Map[i][j]].y = j;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int p;
			scanf("%d",&p);
			Map[i][j] = (Mapping[p].x-1) * m + Mapping[p].y;
		}
		Map[i][0] = 2147483647;
	}
	int Ans = 0;
	for(int i=n;i>=1;i--){
		for(int j=m;j>=1;j--){
			fillcolor(i,j);
		}
	}
//	for(int i=1;i<=n;i++){
//		for(int j=1;j<=m;j++){
//			L[j] = R[j] = j;
//			findheight(i,j);
//		}
//		for(int j=1;j<=m;j++){
//			Ans = max(Ans,find(i,j));
//		}
//	}
	printf("%d\n",Ans);
	return 0;
}

/*
3 4

 5  6  7  8
 1  2  3  4
 9 10 11 12

 5  6  8  7
 1  2  4  3
12 11 10  9



*/

详细

Test #1:

score: 0
Memory Limit Exceeded

input:

3 4
5 6 7 8
1 2 3 4
9 10 11 12
5 6 8 7
1 2 4 3
12 11 10 9

output:


result: