BZOJ4448 SCOI2015 情報傳遞

2022-05-03 18:33:09 字數 1193 閱讀 1857

傳送門

題目大意

給定一棵樹,支援兩種操作:將乙個點染黑,詢問路徑上在$k$步操作前就已經被染黑的點的數量。

題解將染黑看做給乙個點賦其操作編號點權,每次詢問路徑上點權小於一定值的數量。

這樣會有乙個性質,由於$k>0$,所以我們完全可以在查詢之前將所有點權賦上。

所以只需要離線然後查詢就好了,可以在樹上利用差分主席樹維護。

#include#include#include#include#include#include#define ll long long

#define m 300020

using namespace std;

namespace io return *hd++;}

void flush()

void putchar(char c)

void write(int x)

while(x) ss[++top]=x%10,x/=10;

while(top) putchar(ss[top]+'0'),--top;

} int read()

}using namespace io;

int n,m,rt[m],l[m*22],r[m*22],sum[m*22],fs[m],nt[m],to[m],tmp,cnt;

int sz[m],mxs[m],tp[m],fa[m],dep[m],root,u[m],v[m],c[m],t,col[m];

void link(int x,int y)

void ins(int &x,int pre,int l,int r,int pos)

int calc(int t1,int t2,int d1,int d2)

int qry(int t1,int t2,int d1,int d2,int l,int r,int pos)

void dfs1(int x)

}void dfs2(int x,int dtp)

int lca(int x,int y)

return dep[x]}int main()

m++,u[m]=read(),v[m]=read(),c[m]=read(),c[m]=i-c[m];

} dfs1(root),dfs2(root,root);

for(int i=1;i<=m;i++) flush(); return 0;

}

bzoj 4448 Scoi2015 情報傳遞

description 奈特公司是乙個巨大的情報公司,它有著龐大的情報網路。情報網路中共有n名情報員。每名情報員口j 能有 若t名 可能沒有 下線,除1名大頭日外其餘n 1名情報員有且僅有1名上線。奈特公司紀律森嚴,每 名情報員只能與自己的上 下線聯絡,同時,情報網路中仟意兩名情報員一定能夠通過情報...

BZOJ4448 Scoi2015 情報傳遞

bzoj4448 scoi2015 情報傳遞 奈特公司是乙個巨大的情報公司,它有著龐大的情報網路。情報網路中共有n名情報員。每名情報員口j 能有若t名 可能沒有 下線,除1名大頭日外其餘n 1名情報員有且僅有1名上線。奈特公司紀律森嚴,每名情報員只能與自己的上 下線聯絡,同時,情報網路中仟意兩名情報...

BZOJ 4448 Scoi2015 情報傳遞

bzoj 4448 scoi2015 情報傳遞 主席樹 奈特公司是乙個巨大的情報公司,它有著龐大的情報網路。情報網路中共有n名情報員。每名情報員口j 能有 若t名 可能沒有 下線,除1名大頭日外其餘n 1名情報員有且僅有1名上線。奈特公司紀律森嚴,每 名情報員只能與自己的上 下線聯絡,同時,情報網路...