首页 > TAG信息列表 > P3258

洛谷-P3258 松鼠的新家

松鼠的新家 树上差分模板题 - 点差分 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; const int maxn = 3e5 + 10; int val[maxn], dep[maxn], fa[maxn][25], a[maxn]; vector<int>gra[maxn]; void dfs

【LCA+树上差分】P3258 [JLOI2014] 松鼠的新家

3631: [JLOI2014]松鼠的新家 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1727  Solved: 834[Submit][Status][Discuss] Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯

10.12

复习P3258 JLOI2014松鼠的新家 由于是对点权差分,那么对于节点2~n-1,每个点都在进入和出去的时候算了两遍,而按照题意,这里只用放一颗糖,故-1. 加之小熊在到达最后一个点的时候不用再拿糖果了 那么rep(i,2,n)--power[a[i]]//注意是a[i],不是i!

[树上差分][lca] Luogu P3258 松鼠的新家

题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的。天哪,他居然真的住在”树“上。 松鼠想邀请小熊维尼前来参观,并且还指定一份参观指南,他希望维尼能够按照他的指南顺序,先去a1,再去a2,......

洛谷 P3258 松鼠的新家 题解

题面 貌似这道题暴力加玄学优化就可以AC?   下面是正解:   1.树链剖分:    我们在u到v之间都放一个糖果,可以将松鼠它家u到v的糖果数都加1。每一次将a[i]到a[i+1] (a数组是访问顺序)的节点加1,可以用树链剖分来维护。查询只需要查每个点的权值就可以了。(貌似该题比树剖板子还板子?)

P3258 松鼠的新家

题面:https://www.luogu.org/problemnew/show/P3258 本题中每次所修改路径的终点等于下一次所修改路径的起点,所以每次修改完后要将终点的果子数-1。 Code: #include <cstdio> #include <algorithm> #include <cstring> #include <queue> #include <cmath> #include <iostream> us

P3258 [JLOI2014]松鼠的新家 (简单的点差分)

https://www.luogu.org/problemnew/show/P3258 注意开始和最后结尾 1 #include <bits/stdc++.h> 2 #define read read() 3 #define up(i,l,r) for(register int i = (l);i <= (r);i++) 4 #define down(i,l,r) for(register int i = (l);i >= (r);i--) 5 #defin

【题解】P3258松鼠的新家

【题解】[P3258 JLOI2014]松鼠的新家 树链剖分板子题。 总结一点容易写错的地方吧: if(d[top[u]]<d[top[v]]) swap(u,v);注意是\(top\)。 在\(dfs2\)中,if(e[t].to!=r[now]&&e[t].to!=son[now])注意\(r[now]\)而不是\(last\) #include<bits/stdc++.h> using namespace std; #defin