刚开始没有想到k==1,的情况,这种情况下会搜到重复的点,所以k==1时要特殊处理,锁题被hack之后就gg
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rep1(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=2e3+100;
string str[N];
int main()
{
int n,m,k;
cin>>n>>m>>k;
rep(i,0,n)
cin>>str[i];
if(k==1)
{
int aa=0;
rep(i,0,n)
{
rep(j,0,m)
{
if(str[i][j]=='.')
aa++;
}
}
cout<<aa<<endl;
return 0;
}
int ans=0;
rep(i,0,n)
{
int cnt=0;
rep(j,0,m)
{
if(str[i][j]=='.')
cnt++;
else
cnt=0;
if(cnt>=k)
ans++;
}
}
rep(j,0,m)
{
int cnt=0;
rep(i,0,n)
{
if(str[i][j]=='.')
cnt++;
else
cnt=0;
if(cnt>=k)
ans++;
}
}
cout<<ans<<endl;
return 0;
}
本文介绍了一种解决特定条件下矩阵扫描问题的方法,尤其是在k等于1时如何避免搜索重复点的问题。通过分析和示例代码,展示了如何针对特殊情况进行优化处理。

被折叠的 条评论
为什么被折叠?



