洛谷 P3801 紅色的幻想鄉(線段樹 容斥)

2021-10-11 05:05:11 字數 722 閱讀 4514

如果會二維線段樹的話,這個題目應該會好想一點,但是資料範圍不允許使用如果考慮一維線段樹的話,只能考慮每次的貢獻值

其實不難發現,我們建兩個線段樹,分別維護 x 軸和 y 軸,這樣對於每一次詢問,只要找到 [x1,x2] 有幾個標記的點(記為 x),[y1,y2] 有幾個標記的點(記為 y)

所以答案為

也就是減去

那如果有兩個點重合呢?

const int n=1e6+5;

int i,j,k;

int n,m;

int a[n];

struct node

t[n<<2],t[n<<2];

void push_up(int id,node *t)

void build(int l,int r,int id,node *t)

}void update(int pos,int id,node *t)

}int query(int l,int r,int id,node *t)

}int main()

else}}

//pause;

return 0;

}

紅色的幻想鄉 洛谷p3801

蕾公尺莉亞的紅霧異變失敗後,很不甘心。經過上次失敗後,蕾公尺莉亞決定再次發動紅霧異變,但為了防止被靈夢退治,她決定將紅霧以奇怪的陣勢釋放。我們將幻想鄉看做是乙個n m的方格地區,一開始沒有任何乙個地區被紅霧遮蓋。蕾公尺莉亞每次站在某乙個地區上,向東南西北四個方向各發出一條無限長的紅霧,可以影響到整行...

洛谷 P3801 紅色的幻想鄉

蕾公尺莉亞的紅霧異變失敗後,很不甘心。經過上次失敗後,蕾公尺莉亞決定再次發動紅霧異變,但為了防止被靈夢退治,她決定將紅霧以奇怪的陣勢釋放。我們將幻想鄉看做是乙個n m的方格地區,一開始沒有任何乙個地區被紅霧遮蓋。蕾公尺莉亞每次站在某乙個地區上,向東南西北四個方向各發出一條無限長的紅霧,可以影響到整行...

luogu P3801 紅色的幻想鄉

嘟嘟嘟 首先人人都能想到是線段樹,不過二維線段樹肯定會mle tle的。我們換一種想法,不去修改整個區間,而是修改乙個點 開橫豎兩個線段樹,分別記錄哪些行和列被修改了。因為如果兩陣紅霧碰撞,則會因為密度過大而沉降消失,所以自然想到亦或。統計的時候求出這個矩形內有哪些行和列被修改了,接著把這些行和列的...