树
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
树链剖分学习小记
树链剖分学习小记 平常在一棵树上,从点u到点v询问一些最大值,求和之类的,都是先打个lca然后在类暴力一下,小题可以对,但遇到大题就挂了。然后就去看了一下树链剖分%%% 其实也不难。。。 树链剖分其实就是用数据结构去维护上面的点或链,降低一下复杂度。不过如果随意的去维护,会搞得很乱,时间消耗可能比暴搜还慢。 现在有一种剖分的方法:轻重链剖分(启发式剖分)。 从原创 2016-02-04 10:32:28 · 1234 阅读 · 0 评论 -
【51Nod 1806】wangyurzee
Descriptionwangyurzee有n个各不相同的节点,编号从1到n。wangyurzee想在它们之间连n-1条边,从而使它们成为一棵树。 可是wangyurzee发现方案数太多了,于是他又给出了m个限制条件,其中第i个限制条件限制了编号为u[i]的节点的度数不能为d[i]。 一个节点的度数,就是指和该节点相关联的边的条数。 这样一来,方案数就减少了,问题也就变得容易了,现在请你告诉w原创 2016-09-06 17:28:35 · 701 阅读 · 3 评论 -
【NOIP模拟】Map
DescriptionSolution这是一道水题。 首先对原图进行边的双连通分量,那么很显然,在两个不同的联通分量中的点对就是不安全的点对,同在相同的连通分量中的点对就是安全点对。 那么假如有两个连通分量互相连边,那么就会有一群连通分量合并为一个大的连通分量。 那么要如何实现呢?tarjan缩点这是一个很显然而且很经典的想法。 先对原图用tarjan缩点(每个点存储它点的个数),然后缩完点原创 2016-09-19 14:28:53 · 861 阅读 · 0 评论 -
【NOIP2016提高A组五校联考4】label
DescriptionSolution这题比赛的时候没有做出来是要值得反思的。 本来40的算法就非常好打,而且另外的20分打完之后也可以发现一个性质是f[i][j]在j在[1,m](m≥(n−1)∗k)[1,m](m≥(n-1)*k)中是对称的,然后中间一串是相等的,那么DP在j的处理当中只用处理一下前(n-1)*k个的情况和中间的一个情况就好了。 只不过是判断边界条件需要仔细的想一想,这里有点原创 2016-10-10 14:33:00 · 810 阅读 · 0 评论 -
【GDOI模拟】富爷说是一棵树
Description富爷说来一棵树,于是大头栽了一棵树。树大了,有n个点和n - 1条边,任意两个点都是联通的,点的标号为1 - n。爱树的大头和富爷在树上安居乐业,但大头住在u,而富爷住在v,他们都很不高兴,因为u到v有且只有一条简单路径。 当然了,树王富爷找到了解决办法,他打算带着大头再给树建一条边(保证不是自环),而且他们会在n * (n - 1) / 2的方案中随机选择一种。 但,要让原创 2016-09-25 10:11:16 · 653 阅读 · 1 评论 -
【NOIP模拟】跟踪
DescriptionSolution由于一开始没有明白题意,就没有管这道题。 然而这道题是非常水的。 明显是从s开始做。 然后每次往下走,如果儿子不是p或q的父亲,那么就可以直接算。 或者可以待在原题不动(直接算出答案)。 算的时候,画个图,推一推就好了。Code#include<iostream>#include<cstdio>#include<cmath>#include<cs原创 2016-09-29 17:37:23 · 745 阅读 · 0 评论 -
【51 Nod1378】夹克老爷的愤怒
Description夹克老爷逢三抽一之后,由于采用了新师爷的策略,乡民们叫苦不堪,开始组织起来暴力抗租。 夹克老爷很愤怒,他决定派家丁常驻村中进行镇压。 诺德县 有N个村庄,编号0 至 N-1,这些村庄之间用N - 1条道路连接起来。 家丁都是经过系统训练的暴力机器,每名家丁可以被派驻在一个村庄,并镇压当前村庄以及距离该村庄不超过K段道路的村庄。 夹克老爷一贯奉行最小成本最大利润的原则,请原创 2016-12-16 22:46:54 · 662 阅读 · 0 评论 -
【NOI2017模拟4.5】机器人游戏【搜索,DP】
Description小A和小B在一个R行S列的棋盘上玩游戏,棋盘上的每一个棋格都有一个方向标记(上、下、左或右)。游戏按如下方式进行: 小A先将K个棋格涂上黑色(初始为白色),并且他不能涂黑最后一列的棋格;随后,小B在第一列的任意一个棋格上放一个小机器人;此时,小机器人将会不停地沿着他所在的棋格所指示的方向走到一个相邻的棋格,直到他到达最后一列的棋格,游戏结束。 游戏胜负规则如下: ●如果小原创 2017-04-06 17:17:34 · 951 阅读 · 0 评论 -
【GDOI2017 day1】取石子游戏
Description题意简单一点:给出一棵树,让你求出每个节点的子树以外的mex(最小没出现过的自然数)Solution比赛的时候没有看懂,就没敢去打,其实思想很简单。 对于一个序列来说,包含一个x的区间答案肯定不是x。 那么我们把这个想法放到树上。 对于颜色x,我们提取出来,求出他们的lca(求lca是满足结合律的),假设这个lca为y,那么很显然的除了y这个子树,其他的子树都没有x这个颜原创 2017-05-07 08:21:27 · 734 阅读 · 0 评论 -
JZOJ5233【GDOI模拟】概率博弈
Description小A和小B在玩游戏。这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值。假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列。 一开始在1号点有一颗棋子。两人轮流将这颗棋子移向其当前位置的一个儿子。假如棋子到达叶子,游戏结束,最终获得的权值为所在叶子对应权值。 小A希望最后的权值尽量大,小B希望尽量小。小A是先手。 在玩了很多局游戏后,小B对其原创 2017-08-09 09:30:54 · 663 阅读 · 0 评论 -
JZOJ3773【NOI模拟】小 P 的烦恼(拓扑排序,贪心,找桥)
Description小 P 最近遇上了大麻烦,他的高等代数挂科了。于是他只好找高代老师求情。善良的高代老师答应不挂他,但是要求小 P 帮助他一起解决一个难题。问题是这样的,高代老师近期要组织班上同学一起去漂流,漂流可以看做是在一张 n 个点 m 条边的有向无环图上进行的,点编号从 0 到 n-1 ,表示景点; 边是连接各景点的一定长度的河道。同时,定义编号为 s 是起点而 t 是终点。我们不妨把从原创 2017-08-09 09:45:24 · 554 阅读 · 0 评论 -
JZOJ5239【GDOI模拟】图的异或
DescriptionSolution很显然要先求S到T的dfs树,然后S到T首先一定会经过这条路径。 对于所有非dfs树上的边,它都会构成环,那么我们把这环上的值放到线性基里面(这里面的异或值各不同),然后最后用线性基里面所有的数取异或S到T上的值的不同的数的和就好了,这样是可以把所有的路径上的异或值求出来的(画画图就知道了)。 设S到T的值为o。m为线性基上的总数。 那么只考虑每一位,如果原创 2017-08-09 10:02:43 · 523 阅读 · 0 评论 -
【NOIP提高】通讯
Description“这一切都是命运石之门的选择。” 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短信,并由此得知了伦太郎制作出了电话微波炉(仮)。 为了掌握时间机器的技术,SERN总部必须尽快将这个消息通过地下秘密通讯网络,传达到所有分部。 SERN共有N个部门(总部编号为0),通讯网络有M条单向通讯线路,每条线路有一个固定的通讯花费Ci。 为了保密,消息的传递只能原创 2016-08-12 19:51:19 · 675 阅读 · 0 评论 -
【NOIP模拟】树上摩托
DescriptionSherco是一位经验丰富的魔♂法师。 Sherco在第零次圣杯战争中取得了胜利,并取得了王之宝藏——王の树。 他想把这棵树砍去任意条边,拆成若干棵新树,并装饰在他的摩托上,让他的摩托更加酷炫。 但Sherco认为,这样生成的树不具有美感,于是Sherco想让每棵新树的节点数相同。 他想知道有多少种方法分割这棵树。Solution这题一看上去就很难的样子,一直找到所有的原创 2016-09-04 15:38:16 · 932 阅读 · 0 评论 -
LCA模板
DescriptionLCA就是在一棵树中求x与y的最近公共祖先,复杂度O(nlogn)O(n\log n) 首先f[i][j]表示i节点向上跳2j2^j个能跳到f[i][j],deep[i]表示i在树中的深度。 步骤:1、首先把x和y跳到同一个深度当中;2、然后使x和y调到同一个点中。Code发现了一种十分优美的LCA打法。int lca(int x,int y){ int i;原创 2016-04-19 18:14:23 · 591 阅读 · 0 评论 -
【JZOJ4599】西行妖
Description在幻想乡白玉楼有一棵终年不开花的樱树叫西行妖,西行寺幽幽子曾经为了让它开花而大量收集春度,然后被城管教训了一顿… 现在,幽幽子得到城管的允许,收集了S点春度,让西行妖重新开花。 西行妖可以被看成是一棵有n个节点的树,每个叶子节点被分配了1点春度就能开花(幽幽子不会无意义地使用她的春度,于是最多只会给同一个叶子节点分配1点春度),对于非叶子节点i,如果它有至少有1个儿子开花,原创 2016-07-10 09:33:35 · 1113 阅读 · 0 评论 -
【TJOI2016&&HEOI2016】树
DescriptionSolution第一眼的链剖维护重链上打过标记的点的下标的最大值就好了。倒着做并查集也可以Code#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)#define rep(i,a原创 2016-07-13 21:46:27 · 982 阅读 · 0 评论 -
Link Cut Tree学习小记
简介Link Cut Tree简称LCT,是维护动态树方式的一种,是一个可以对树进行添加链或子树,删除链或子树等等,可以支持对树的结构进行修改的算法。与树链剖分的区别树链剖分只能维护静态树,就是只能对树上的点的值进行修改的算法,一般还是用线段树来维护的。 所以LCT就厉害了,首先是维护方式不同,其次它是用splay来维护的。树链剖分可以干的,LCT都可以干,但LCT可以干的,树链剖分有些并不能干。原创 2016-07-03 21:01:44 · 2402 阅读 · 0 评论 -
【NOIP模拟】Angel Beats!
Description天使立华奏攻入了死后世界战线(SSS)的地下工会Guild,这是万分危急的时候。仲村由理指挥工会成员有条不紊地进行撤退工作。工会成员在Guild最深层工厂安放炸药需要很长的准备时间,需要有人来拖延立华奏的前进速度。但是他们并不清楚立华奏的具体位置,因此他们需要设立许多个防御点。 Guild的结构可以看成一棵有n 个节点的树,有时由理会得到立华奏的大概位置,可能在某两棵子树的任原创 2016-07-18 09:33:29 · 1537 阅读 · 0 评论 -
【CF 609E】Street
Description给出n个点,m条有权边,现对于每一条边,你需要回答出包含这条边的最小生成树的总边权值。Solution有一道很像的题目电话线铺设,而且这题还比电话线铺设水很多。观察数据发现数据很大,又都在int范围内,还有求和求积之类的操作,就要开long long。Code#include<iostream>#include<cstdio>#include<cstring>#inclu原创 2016-07-08 19:35:28 · 827 阅读 · 0 评论 -
【GDOI 2016】机密网络
DescriptionSolution环套外向树分治!!!很有趣,比赛时打了个暴搜就过了。 以后还有仙人掌分治(瞎猜)怎么办……幸好只有一个环很容易想到,在环上拆掉一条边,然后求点对,在计算只通过这条边的点对,就好了!!!问题来了,只通过这条边的点对要怎么统计正难则反。 只通过这条边的点对=删边前可以的点对-删边后和删边前都可以的点对。 所以,删边前可以的点对=ans=只通过这条边的点对+删边原创 2016-08-07 18:34:37 · 701 阅读 · 0 评论 -
【NOIP提高】树上路径
Description给出一棵树,求出最小的k,使得,且在树中存在路径p,使得k>=S且k<=E。(k为路径p上的边的权值和)Solution这个一眼的树分治啊! 但是标了NOIP的题不敢打树分治,结果TAT。 其实打了个不确定的方法,但是在不是菊花图的情况下跑的很快。 每次对每个点每个儿子的子树与这个点的距离放进一个数组里,然后数组两两合并,并同时求答案。 比如把一个儿子节点的所有值放进了原创 2016-08-19 21:41:24 · 890 阅读 · 0 评论 -
【NOIP模拟】Crisis
Description最近几年,一场新的金融危机爆发了,这场危机使得很多人陷入的经济问题的困境。一些X公司的员工试图通过要求加薪度过这一难关。 X公司有着严格的等级制度,除了公司所有者小H以外,其他人都有一个直属上司。没有下属的员工称为工人,其他人则称为领导者。 为了加薪,工人们都会向他们的上司提交请愿书。当然,每个领导者都希望自己的下属能够尽可能快乐的工作,所以当至少有T%的下属提交请愿书时,原创 2016-09-10 14:16:24 · 781 阅读 · 0 评论 -
【NOIP提高】种树
DescriptionSolution删点的前提条件首先,一棵树有n个节点,就有n-1条边。 那么删掉这个点之后,必须满足n-1个点,n-2条边。奇怪的情况如果你删掉了这个点,把原来的这个图分成了两个部分,那么这个点就不能删掉。 怎么找这个点。 其实这种点叫做割点。 一个割点满足,这个点连出的边,有一个点是在不同的强连通分量里面的话,那么这个点就是一个割点。 强连通分量要用tarjan求。原创 2016-08-11 17:12:22 · 754 阅读 · 0 评论 -
【GDOI模拟】子串
DescriptionSolution这题,刚看到还以为是后缀自动机。但是好像很难做。又想了想莫队,好像也不行。多串匹配,AC自动机,难得打,又看回NOIP组去。 比赛完后,正解的确是AC自动机。 很显然是,把所有的查询的字符串丢进AC自动机里面去,然后每个字符串可以拆成两个操作,因为要询问[l,r]所以拆成+[1,r]和-[1,l-1]。 然后把上面的字符串放到AC自动机里面跑。 比如说,原创 2016-09-14 18:46:12 · 841 阅读 · 0 评论 -
【JZOJ5262】【GDOI2018模拟8.12】树(DP,性质题)
DescriptionSolution首先我们可以知道两个性质:1、路径u-v和路径v-w可以合并为路径u-w;2、路径u1-v1加路径u2-v2和路径u1-v2加路径u2-v1是等价的(就是起始点和终点可以互换) 那么知道这些性质之后就很好做了。我们只用知道每个点多少次做起点和多少次做终点。 我们设f[i]表示满足i子树的需求i上的值要是多少。 那么枚举i的所有儿子,判断a[i]-f[i],原创 2017-08-21 07:57:16 · 474 阅读 · 0 评论