首先不知道有沒有神仙線段樹分治過的。
首先乙個較為顯然的性質:
\[\mathrm\ = \mathrm\\}
\]這個啟發我們維護差分序列,此時1操作變成了單點異或,2操作變成了單點異或以及區間清空。
但是這道題維護的是線性基,所以要用帶刪除的線性基實現。(具體見【集訓隊作業2018】圍繞著我們的圓環)
此時單點異或顯然可以變成插入再刪除。因為線性基的時間複雜度,此時暴力清空也沒問題。
因為每次操作最多使兩個位置非負,暴力清空時特判空向量,此時可以攤還分析,複雜度正確。
因此複雜度為 \(o(\frac)\)。
這次優化了帶刪除線性基的**(從虞大那裡參考了部分寫法)
#include const int maxn = 2048;
typedef std::bitsetb;
int n, m, q;
b frm[maxn], a[maxn], arr[maxn];
int bse[maxn], isb[maxn];
b read()
void insert(int at) }}
void modify(int at, b v)
void output(const b & x)
b query()
int main() else if (opt == 2) else if (opt == 3) output(query());
} return 0;
}
集訓隊互測2015 Robot
題目描述 題解 維護兩顆線段樹,維護最大值和最小值,因為每次只有單點查詢,所以可以直接在區間插入線段就可以了。注意卡常,不要寫stl,用鍊錶把同類修改串起來就好了。pragma gcc optimize 2 pragma gcc optimize 3 include include include ...
集訓隊互測 2012 Attack
description chnlich非常喜歡玩三國志這款遊戲,並喜歡用一些策略出奇制勝。現在,他要開始征服世界的旅途了。他的敵人有n nn座城市和n nn個太守,n nn個城市可以看作在二維平面上的n nn個點。n nn座城市的標號為0,1 2,n 1 0,1,2,cdots,n 1 0,1,2,...
集訓隊互測2013 城市規劃
求n個點的帶標號連通簡單圖的個數。答案對1004535809取模。n 130000 根據套路,首先我們需要求出n個點的帶標號簡單圖的個數,設為g n 顯然我們有g n 2 n n 1 2 考慮設答案為f n 要怎麼求出?列舉1號點所在的聯通塊的大小,我們可以知道 g n i 1n f i ci 1 ...