给$2n\times 2m$的网格,分成$nm$个$2\times 2$的网格,需要填左上角和右下角的某一个,询问是否可以填完之后没有角相同的格子。
如果禁止右下角,发现左上方的部分都需要填在左上角。
如果禁止左上角,发现右下方的部分都需要填在右下角。
我们设每行左边控制到$l[i]$,右边控制到$r[i]$。
考虑一行的情况,显然$l[i]\geq r[i]$,不成立。
考虑两行如果下面那行$l[i]\leq r[i]$,会发现顶点碰到了。
考虑那么这样就可以合并了。
维护区间的最大$l$,最小$r$,维护合并的是否可以填充。
一些小细节
- 注意区间左右合并的大小判断。
- 注意$set.begin(),set.rebegin()$
代码
1 |
|