蜗蜗看电影

题目传送门

注意提米里面的一句话:如果两组连续空位置中至少有一个位置不同,则视为不同的方案。

这句话看似没什么用,但是k=1的时有很大用处

因为k=1的时候,同一个点会在纵横各算一次,所以答案是正确答案的两倍。
那么再输出答案的时候要特判一下,如果k=1,cnt/2,否则正常输出

代码如下

#include<bits/stdc++.h>
using namespace std;

int n,m,b;
char s[105][105];

int main(){
	cin.tie(0)->sync_with_stdio(0); 
	cin>>n>>m>>b;
	for(int i=1;i<=n;i++) cin>>s[i]+1;
	int cnt=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m-b+1;j++){
			bool f=1;
			for(int k=j;k<=j+b-1;k++) 
				f&=(s[i][k]=='.');
			if(f) cnt++;
		}
	}
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n-b+1;j++){
			bool f=1;
			for(int k=j;k<=j+b-1;k++) f&=(s[k][i]=='.');
			if(f) cnt++;
		}
	}
	b==1?cout<<cnt/2<<endl:cout<<cnt<<endl;
}
posted @ 2026-01-24 11:55  zhangruotian_Max  阅读(1)  评论(0)    收藏  举报