病菌感染

传送门

题目大意

给你一个n*n的矩阵,然后给定一个m(0<m<n),接着输入m个坐标,表示该m个坐标表示的区域已经被感染。如果未被感染的矩形有至少2个与它相邻的感染矩形,那么该矩形也会被感染。现在问最终是否所有的矩形都会被感染。

思路

首先做这种题目一定要在纸上多画几种情况,去找规律,直接盲目的用搜索肯定不是正确的选择(用搜索的话就有点麻烦了),其实只有当被感染区域的周长达到4*n时才能将整个矩形感染(比如说感染区域为对角线,可以自己画图试试)。然后题目给出了m的范围,m永远小于n,所以这一题的答案都是NO。
下面给出证明:
目标区域是整个感染矩形,周长是4*n(只看最外围),然后如果有两个感染矩形又感染了第三个矩形,该矩形至少会有两条边进入到感染区域内,最多会有两条边加到感染区域的边界上,因而,感染区域的周长不会增加,既然整个区域的周长为4*n,那么最终要想全部感染,最初的感染区域周长必须为4*n。而要达到4*n的周长,这个排列方式就很多种了。

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,m,x,y;
	cin>>n>>m;
	for (int i=1;i<=m;i++){
		cin>>x>>y;
	}
	cout<<"NO";
	return 0;
}
posted @ 2020-09-15 22:45  一段时光  阅读(231)  评论(0)    收藏  举报