![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
蜗角虚名羊
这个作者很懒,什么都没留下…
展开
-
51nod 1322 关于树的函数
题目 题解 #include<bits/stdc++.h> #include<tuple> using namespace std; typedef tuple<int,int> ti; typedef long long ll; #define mt make_tuple const int N=4002; struct node{ int t...转载 2018-06-16 14:01:05 · 209 阅读 · 0 评论 -
树边,前向边,后向边,横叉边
原文地址:树边,前向边,后向边,横叉边 树边,前向边,后向边,横叉边,应该说,不是一个图本身有的概念,应该是图进行DFS时才有的概念。图进行DFS会得到一棵DFS树(森林),在这个树上 才有了这些概念。对图进行DFS,可以从任意的顶点开始,遍历的方式也是多样的,所以不同的遍历会得到不同的DFS树,进而产生不同的树边,前向边,后向 边,横叉边。所以这4种边,是一个相对的概念。 在图的遍历中,往往...转载 2019-02-19 14:30:32 · 1749 阅读 · 0 评论 -
绍兴一中模拟赛10.20&10.27——tree1.0&2.0
Tree1.0 Description 选择起始点和终点以后,会每次等概率随机走到一个相邻的点(不能来回走同一条边多次),问最后走到终点的期望步数 Solution 统计下子树内和子树外的点分别作为起点和终点的贡献即可 Code #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=...原创 2018-10-27 22:22:36 · 147 阅读 · 0 评论 -
AT2377 Blue and Red Tree
题目 题解 Solution 首先可以发现最终状态替换的红边和蓝边一定是重边。把这条边两端的联通块看成一个点。 往回推,要形成这两个点,必须也要有类似的重边 这样就可以得到一种做法。每次把重边两端的放入队列,并把边集合并(启发式合并),把这两个联通块合并 再把重边放入,直至更新完成 Code #include<bits/stdc++.h> using namespace std; #d...转载 2018-10-30 12:29:44 · 176 阅读 · 0 评论 -
51nod 1470 计算机网络问题
题目 题解 Solution 一个边双连通分量一定可以找到一个不走重复边的环 这个的话用两个之间一定存在至少两条没有公共边的路径可以得证 所以双连通分量的所有点是可以随便两两到达的 于是我们可以先来一发双连通缩点 然后就变成了一个树 差分一下 Code #include<bits/stdc++.h> using namespace std; const int N=200001; st...转载 2018-10-24 15:05:23 · 201 阅读 · 0 评论 -
Codeforces 1042F. Leaf Sets
题目 题解 Solution 把子树拆成几条链,每次合并短的几条链 Code #include<bits/stdc++.h> using namespace std; const int N=1000001; struct node{ int to,ne; }e[N<<1]; int n,m,i,x,y,d[N],tot,h[N],ans; inline char gc(...转载 2018-10-31 07:44:59 · 112 阅读 · 0 评论 -
hdu5293 Tree chain problem
题目 题解 题意:有m条链,每条链链接两个顶点,链存在一个权值w,现在想要挑选一些链,挑选的链中不能出现相同的节点,问可以挑选出的最大的权重是多少 Solution 设dp[i]dp[i]dp[i]为以第iii个点位根节点的子树的最优解,sum[i]sum[i]sum[i]表示表示iii节点的所有子节点的dpdpdp和(注意:不包括iii) 1.第iii个节点上不出现链,那么dp[i]=∑(dp[...转载 2018-10-29 09:07:12 · 287 阅读 · 0 评论 -
Codeforces 573C. Bear and Drawing
题目 题意:有一棵树,然后有两行列无限的点。问这棵树能否画在点阵上,树的边不能相交 Solution 我们记只有一个点的子树为①。 记只有1个①的子树为①。 记有且仅有2个①的子树为②。 记有且仅有1个③或至少有1个②或至少有3个①的子树为③。 记恰好有2个③和若干小于③的子树为④。 记其他的子树为⑤。 只有当根不超过④时,才合法 Code #include&lt;bits/stdc++.h&gt...原创 2018-10-22 07:44:28 · 274 阅读 · 0 评论 -
Codeforces 718D. Andrew and Chemistry
题目 题解 #include<bits/stdc++.h> using namespace std; const int N=100001; map<int,int>mp[N]; map<vector<int>,int>H; set<int>S; vector<int>e[N]; int n,i,x,y,tot; inline...转载 2018-10-19 13:44:14 · 169 阅读 · 0 评论 -
Codeforces 765E. Tree Folding
题目 题解 题意:给你一棵树,可以在这棵树上进行若干次操作,每次操作可以把两条长度相同的链,根据一个中点合并在一起。然后问你经过若干次合并之后,最后的最短链长度是多少 Solution 先从节点1开始dfs。 对于每一个节点,用一个set记录:以该点为根的子树的深度。 a) 如果此节点的某个子节点打出了GG,则此节点直接打出GG。 b) 若set的元素个数<=1,那么,以该点为根的子树,显然...转载 2018-10-19 11:22:28 · 206 阅读 · 0 评论 -
bzoj2525: [Poi2011]Dynamite
题目 思路出处 感觉这题就是消防局的设立+n开大300倍+距离为任意数+二分答案 显然,这题就是二分答案后,把当前最深的点向上ans单位,然后覆盖这个点,并把ans距离内的全覆盖一遍,但这样很难写,要稍微换一下写法 设b[i]表示i点是否被覆盖, 当b[i]==0时,f[x]表示以x为根的子树中目前还没有人管理的关键点距离x的最远的距离 否则,f[x]表示以x为根的子树中选择了的点距离...原创 2018-07-15 10:07:36 · 168 阅读 · 0 评论 -
51nod 1677 treecnt
题目 题解 对任意边(u,v) 设a=以v为根的子树的点 b=n-a 那这条边被选择的次数=C(a,1)*C(b,k-1)+C(a,2)*C(b,k-2)+C(a,3)*C(b,k-3)+….. 显然 这样肯定会TLE 不妨换个角度 考虑从n个点中选择k个点 一共有C(n,k)总情况 当k个点全在a中选出来 或 k个点全在b中选出来的情况是要排除...原创 2018-07-13 14:31:41 · 130 阅读 · 0 评论 -
一中模拟赛3.15——树上gcd
Solution 计算每个质因子在哪些点出现,然后在树上只保存这些点,通过计算大于000的g(i,j)g(i,j)g(i,j)个数来计算贡献 如果质因子次数&amp;amp;gt;1&amp;amp;gt;1&amp;gt;1,那么把p2p^2p2,p3p^3p3,…,pkp^kpk都按同样方法做一遍 Code 代码中*q就相当于q[0]q[0]q[0],*vis,*vis1同理 #include&amp;lt;bits/st...原创 2019-03-15 20:39:36 · 256 阅读 · 0 评论