绿题打暴力,n^4出奇迹
  • 板块P1191 矩形
  • 楼主LLqm_rYZ
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/8/23 22:54
  • 上次更新2023/11/3 01:37:56
查看原帖
绿题打暴力,n^4出奇迹
302328
LLqm_rYZ楼主2023/8/23 22:54

挑战最慢解法:O(n4)O(n^4)

就是二位前缀和板子,抱着骗分的心态A掉了这个普及+/提高

#include<iostream>
#include<string>
using namespace std;

const int N=150;
int n,cnt;
int s[N+10][N+10];
string a[N+10];

int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
		for(int j=0;j<n;j++){
			if(a[i][j]=='W'){
				s[i+1][j+1]=1;
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			s[i][j]+=s[i][j-1]+s[i-1][j]-s[i-1][j-1];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			for(int k=1;k<=i;k++){
				for(int l=1;l<=j;l++){
					if(s[i][j]-s[i][l-1]-s[k-1][j]+s[k-1][l-1]==(i-k+1)*(j-l+1)){
						cnt++;
					}
				}
			}
		}
	}
	cout<<cnt<<endl;
	
	return 0;
}

评测记录

2023/8/23 22:54
加载中...