国产毛多水多高潮高清,久热这里只有精品视频6,国内精品久久久久久久久电影网,国产男同志CHINA69,精品999日本久久久影院,人人妻人人澡人人爽人人精品,亚洲中文无码永久免

Rooks Defenders(二分)-皇家三张扎金花官方下载

Rooks Defenders(二分)

2026-01-18 11:02:49投稿人:BB雷電PK10(曲靖)有限公司圍觀8663 評(píng)論

Rooks Defenders(二分)

題目 https://codeforces.com/contest/1679/problem/C

題意:給定一個(gè)的矩陣,有三種操作

  • 往矩陣埋一顆地雷 ,保證對(duì)應(yīng)的點(diǎn)之前不存在地雷 。
  • 往矩陣挖掉一個(gè)顆地雷 ,保證對(duì)應(yīng)的點(diǎn)之前存在地雷 。
  • 查詢(xún)子矩陣是否所有點(diǎn)都被地雷覆蓋。一個(gè)點(diǎn)(x,y)被地雷覆蓋 ,當(dāng)且僅當(dāng)至少存在一個(gè)地雷(a,b)  ,使得x==a或y==b。即至少存在一個(gè)地雷和它同行或同列。

思路:維護(hù)沒(méi)有被地雷覆蓋的行和列。對(duì)于每次查詢(xún) ,如果在對(duì)應(yīng)范圍內(nèi),存在至少一個(gè)沒(méi)有被覆蓋的行 ,和至少一個(gè)沒(méi)有被覆蓋的列  ,則說(shuō)明子矩陣沒(méi)有被覆蓋。否則,說(shuō)明矩陣被完全覆蓋。詳見(jiàn)代碼。


#include using namespace std;const int maxn = 100010;int n, q, op;int x, y, x2, y2;setrow, col;int numr[maxn], numc[maxn];void init() { 	row.clear();	col.clear();	memset(numr, 0, sizeof(numr));	memset(numc, 0, sizeof(numc));	vectorve;	for (int i = 1; i <= n; ++i) { 		ve.push_back(i);	}	row = { ve.begin(), ve.end()};	col = { ve.begin(), ve.end()};}// 查找s集合是否存在 [st,ed] 的元素 bool check(set&s, int st, int ed) { 	// >= st	// 用通用lower_bound超時(shí)了