满江红求调
查看原帖
满江红求调
1082999
jfls211320zhr楼主2024/8/24 19:31
#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[1004][1004];
int dp[1004][1004];
int t[1004],tmp;
int mi[1004];
int tri[1004];
void init(){
	for(int i=1;i<1004;i++)tri[i]=tri[i-1]+i;
	return;
}
int main(){
	init();
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int ii=1;ii<=m;ii++){
			mi[ii]=-2147483648;
			for(int iii=1;iii<ii;iii++)mi[ii]=max(mi[ii],t[iii]);
			t[ii]=i;
			cin>>a[i][ii];
			dp[i][ii]=dp[i-1][ii];
			tmp=1;
			while(t[ii]>0&&a[t[ii]][ii]=='.'){
				while(tmp<ii&&mi[tmp]>=t[ii])tmp++;
				dp[i][ii]+=ii-tmp+1;
				t[ii]--;
			}
			for(int iii=1;iii<ii;iii++)mi[iii]=max(mi[iii],t[ii]);
			//printf("%d ",dp[i][ii]);
		}
		//puts("");
	}
   printf("%d",dp[n][m]);
	return 0;
}
2024/8/24 19:31
加载中...