求时间复杂度分析
  • 板块P4147 玉蟾宫
  • 楼主ダ月Nahida
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/1/20 16:37
  • 上次更新2023/10/24 03:30:16
查看原帖
求时间复杂度分析
511271
ダ月Nahida楼主2023/1/20 16:37

话说 O(n3)O(n^3) 过不了 10001000 吧,下面这个代码过了,请问为什么

#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N=1e3+10;
char c[N][N];
int r[N][N];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>c[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			if(c[i][j]=='R') continue;
			int pos=j;
			while(pos++,pos<=m&&c[i][pos]=='F');
			r[i][j]=pos-1;
		}
	int ans=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			if(c[i][j]=='R') continue;
			int pre=r[i][j];
			for(int k=i;k<=n;k++){
				if(c[k][j]=='R') break;
				pre=min(pre,r[k][j]);
				ans=max(ans,(k-i+1)*(pre-j+1));
			}
		}
	cout<<ans*3;
	return 0;
			
}
2023/1/20 16:37
加载中...