luoguP2146 軟體包管理器(樹鏈剖分)

2022-03-01 10:18:42 字數 1597 閱讀 4749

傳送門

看著很嚇人,其實就是個樹鏈剖分模板。

可支援操作:

1.將節點 x 到 根 的路徑上的值都變成 1 

2.將以節點 x 為根的子樹的值都變成 0

1a爽~

——**

1 #include 2 #include 3 #include 4 #include 5

#define root 1, 1, n

6#define ls now << 1, l, mid

7#define rs now << 1 | 1, mid + 1, r89

const

int maxn = 1000001;10

intn, m, cnt, tim, ans;

11int

head[maxn], to[maxn], next[maxn];

12int f[maxn], son[maxn], size[maxn], deep[maxn], tid[maxn], top[maxn], sum[maxn << 2], turn[maxn << 2

];13

14 inline int

read()

1522

23 inline void add(int x, int

y)24

2930 inline void dfs1(int

u)3142}

4344 inline void dfs2(int u, int

tp)4555}

5657 inline void swap(int &x, int &y)

5861

62 inline void pushup(int

now)

6366

67 inline void pushdown(int now, int

len)

6876

77 inline void update(int x, int ql, int qr, int now, int l, int

r)78

86if(r < ql || l > qr) return

;87 pushdown(now, r - l + 1

);88

int mid = (l + r) >> 1;89

update(x, ql, qr, ls);

90update(x, ql, qr, rs);

91pushup(now);92}

9394 inline void qupdate(int x, int u, int

v)95

102if(deep[u] >deep[v]) swap(u, v);

103update(x, tid[u], tid[v], root);

104}

105106

intmain()

107120 dfs1(0

);121 dfs2(0, 0

);122 m =read();

123for(i = 1; i <= m; i++)

124132

return0;

133 }

view code

軟體包管理

軟體源 ete apt sources.list.d 軟體源索引 var lib apt lists 狀態資訊 var lib dpkg statustonny tonny ftt apt cache pkgnames wc l 軟體包的數目 tonny tonny ftt apt cache po...

軟體包管理

使用rpm命令管理軟體rpm q 軟體包 查詢軟體包 rpm ivh 軟體名 版本號.rpm 安裝 rpm e 軟體名 解除安裝 rpm ql 軟體名 檢視已安裝清單補充 匯入紅帽簽名資訊 rpm import 路徑.rpm gpg key redhat release rpm ivh vh 顯示進...

軟體包管理

在linux作業系統中,有乙個系統軟體包,它的功能類似於windows裡面的 新增 刪除程式 但是功能又比 新增 刪除程式 強很多,它就是red hat package manager 簡稱rpm 此工具包最先是由red hat公司推出的,後來被其他linux開發商所借用。由於它為linux使用者省...