CF1461B

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
const int N=1e5+7;
int g[600][600],n,m;
int main(){
    int t;cin>>t;
    while(t--){
        ll ans=0;
        for(int i=0;i<600;++i)
            for(int j=0;j<600;++j)
                g[i][j]=0;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;++i){
            for(int j=1;j<=m;++j){
                char a;cin>>a;
                if(a=='*')g[i][j]=1;
            }
        }
        for(int i=n;i>=1;--i){
            for(int j=1;j<=m;++j){
                if(g[i][j]==1){
                    g[i][j]=min(g[i+1][j-1],min(g[i+1][j],g[i+1][j+1]))+1;
                    ans+=g[i][j];
                }
            }
        }
        cout<<ans<<"
";
    }
    return 0;
}
原文地址:https://www.cnblogs.com/PdrEam/p/14155152.html