其實沒有什麼好說的,這個題就屬於那種看起來沒什麼細節,實際也沒有什麼細節的題,但是卻把我埋了,關於這道題的細節請讀者自悟
然後就是樹上差分,適用於多次操作一次查詢的題
把路徑$(u, v)$的邊權加$val$的操作:
完
#include #include#define re register
using
namespace
std;
inline
intread()
const
int maxn = 300005
;int
n, diff[maxn], ord[maxn], num[maxn];
struct
edge e[maxn
<< 1
];int cnte = 1
, head[maxn];
inline
void add_edge(int i, int j)
int dep[maxn], anc[maxn][21
];void dfslca(int u, int
fa)
}inline
int lca(int x, int
y) void dfs(int u, int
fa)
}int
main()
dfslca(
1, 0
);
for (int i = 1; i <= 18; ++i)
for (int u = 1; u <= n; ++u) anc[u][i] = anc[anc[u][i - 1]][i - 1
];
for (re int i = 1; i < n; ++i)
dfs(
1, 0
);
for (int i = 1; i <= n; ++i) printf("
%d\n
", (num[i] == 1) ? diff[i] : (diff[i] - 1
));
return0;
}
JLOI2014 松鼠的新家
裸的 樹鏈剖分 然而 並不用線段樹 求x,y的lca 後 在 x上標記加一,y上標記加一 lca標記減一,fa lca 標記減一 include int n int shunxv 300005 int to 600005 next 600005 head 600005 cnt void add in...
JLOI2014 松鼠的新家
time limit 10 sec memory limit 128 mb submit 1736 solved 840 松鼠的新家是一棵樹,前幾天剛剛裝修了新家,新家有n個房間,並且有n 1根樹枝連線,每個房間都可以相互到達,且倆個房間之間的路線都是唯一的。天哪,他居然真的住在 樹 上。松鼠想邀請...
JLOI2014 松鼠的新家
松鼠的新家是一棵樹,前幾天剛剛裝修了新家,新家有n個房間,並且有n 1根樹枝連線,每個房間都可以相互到達,且倆個房間之間的路線都是唯一的。天哪,他居然真的住在 樹 上。松鼠想邀請小熊維尼前來參觀,並且還指定乙份參觀指南,他希望維尼能夠按照他的指南順序,先去a1,再去a2,最後到an,去參觀新家。可是...