模拟模拟
1 #include<bits/stdc++.h> 2 using namespace std; 3 inline int ra() 4 { 5 int x=0,f=1; char ch=getchar(); 6 while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();} 7 while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();} 8 return x*f; 9 } 10 bool mp[105][105]; 11 int n,m,k,ans,tot; 12 int main() 13 { 14 n=ra(); m=ra(); k=ra(); 15 for (int i=1; i<=n; i++) 16 { 17 char ch[105]; 18 scanf("%s",ch+1); 19 for (int j=1; j<=m; j++) 20 if (ch[j]=='.') mp[i][j]=1,tot++; 21 } 22 if (k==1) 23 { 24 cout<<tot<<endl; 25 return 0; 26 } 27 for (int i=1; i<=n; i++) 28 { 29 int last=0; 30 for (int j=1; j<=m+1; j++) 31 if (!mp[i][j]) ans+=max(last-k+1,0),last=0; 32 else last++; 33 } 34 for (int j=1; j<=m; j++) 35 { 36 int last=0; 37 for (int i=1; i<=n+1; i++) 38 if (!mp[i][j]) ans+=max(last-k+1,0),last=0; 39 else last++; 40 } 41 cout<<ans<<endl; 42 return 0; 43 }