90分求助
  • 板块P1950 长方形
  • 楼主fzj121382
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/9/26 16:51
  • 上次更新2023/10/27 09:53:31
查看原帖
90分求助
754281
fzj121382楼主2022/9/26 16:51
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
    register int x=0,w=1;
    register char ch;
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            w=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
        x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
    return x*w;
}
signed main(){
	register int ans,n,m;
	register char mp[1001][1001];
	register char fail[1001];
	register char s[1001];
	n=read();
	m=read();
	for(register int i(1);i<=n;++i){
		cin>>s;
		for(register int j(1);j<=m;++j){
			mp[i][j]=s[j-1]=='.'?1:0;
		}
	}
	for(register int up(1);up<=n;++up){
		memset(fail,0,sizeof(fail));
		for(register int down(up);down<=n;++down){
			for(register int i(1);i<=m;i++){
				if(!mp[down][i]){
					fail[i]=1;
				}
			}
			for(register int l(1);l<=m;++l){
				register int r=l;
				while(!fail[r]&&r<=m){
					++r;
				}
				ans+=((r-l+1)*(r-l))>>1;
				l=r;
			}
		}
	}
	printf("%lld",ans); 
	return 0;
} 

第8个点TLE,帮帮孩子吧

2022/9/26 16:51
加载中...