这个黑色块肯定都是凸的。
即:黑色格子必须在中间,否则两边都有S会吸到中间的白色。
然后就是不能只有空行,或只有空列。否则会出现这一行或这一列S无法放的情况。
上述2个条件满足后,dfs算联通块即可。
#include
using namespace std;
typedef long long ll;
#define ls (o<<1)
#define rs (o<<1|1)
#define pb push_back
const double PI= acos(-1.0);
const int M = 1e5+7;
/*
int head[M],cnt;
void init(){cnt=0