Seat Arrangements
题目传送门
题意:n*m个座位,按照矩阵排列,’.’表示没有人,’*’表示有人坐,让你找一排连续大小为k的座位,问有多少个。
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <cmath>
#include <algorithm>
#include <functional>
#define inf 10000000
using namespace std;
typedef long long ll;
const int MAXN=5e6+10;
const int MAX=2e3+10;
const double eps=1e-6;
int n,m,k;
char mapp[MAX][MAX];
int x[MAX][MAX],y[MAX][MAX];
int main(){
#ifdef ONLINE_JUDGE
#else
freopen("in.txt","r",stdin);
#endif
cin>>n>>m>>k;
int ans=0;
for(int i=1;i<=n;i++){
scanf("%s",mapp[i]+1);
for(int j=1;j<=m;j++){
x[i][j]=x[i-1][j];
y[i][j]=y[i][j-1];
if(mapp[i][j]=='*'){
x[i][j]++;
y[i][j]++;
}
if(i>=k&&x[i-k][j]==x[i][j]) ans++;
if(k!=1&&j>=k&&y[i][j-k]==y[i][j]) ans++;
}
}
cout<<ans<<endl;
return 0;
}