●洛谷P3233 [HNOI2014]世界树】的更多相关文章

题链: https://www.luogu.org/problemnew/show/P3233题解: 虚树,dp,倍增. 首先对于每个询问,要把虚树建出来,这一步就从略了.这里着重分享一下如何求答案. 比如,我们建出来如下一颗虚树,给出的关键点是那些黑点点们,红点点是"被迫"加入的LCA 然后,我们就要去求每个黑点的答案了! 等等,YY了一会儿,发现好像现在还并不方便直接求. 那么我们一步一步来,先求出这颗虚树上的每个节点属于哪个黑点管辖(到哪个黑点最近). 用near[u]表示距离u…
虚树= = #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<vector> #define INF 0x7f7f7f7f #define MAXN 300005 #define LOG 20 #define rint register int #define pb push_back #define pii pair<int,…
题面 luogu 题解 数据范围已经告诉我们是虚树了,考虑如何在虚树上面\(dp\) 以下摘自hzwer博客: 构建虚树以后两遍dp处理出虚树上每个点最近的议事处 然后枚举虚树上每一条边,考虑其对两端点的答案贡献 可以用倍增二分出分界点 如果a,b的分界点为mid,a,b路径上a的第一个儿子为x 则对a的贡献是size[x]-size[mid] 对b的贡献是size[mid]-size[b] 还要算上没被考虑的点 Code // luogu-judger-enable-o2 #include<b…
正解:虚树 解题报告: 传送门! 首先看到这种就要想到虚树这个是毫无疑问的QwQ 建虚树什么的都可以循规蹈矩地做,不说辣,具体可以看下虚树学习笔记什么的看下板子 但是建好虚树之后怎么搞还是有点儿讲究,所以专门开个题解港下(所以为什么好多人拿这个当做虚树入门题什么的昂,,,大概我太菜辣所以只有理解了半天趴QAQ(我我我我在网上找题解看到好多都是说,"首先求值很容易balabala",,,就很绝望,,,可能真的我太菜辣QAQ 首先读入dfs然后建虚树什么的跳过,直接到计算答案的地方 这里主…
题意:给定树上k个关键点,每个点属于离他最近,然后编号最小的关键点.求每个关键点管辖多少点. 解:虚树 + DP. 虚树不解释.主要是DP.用二元组存虚树上每个点的归属和距离.这一部分是二次扫描与换根法. 然后把关键点改为虚树节点,统计每个虚树节点管辖多少个节点,用SIZ表示,初始时SIZ = siz,SIZ[RT] = n. 如果一条虚树边两端点的归属相同.那么SIZ[fa] -= siz[son] 否则树上倍增找到y是最靠上属于的son的,然后SIZ[fa] -= siz[y] SIZ[so…
P3237 [HNOI2014]米特运输 题目描述 米特是\(D\)星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. \(D\)星上有\(N\)个城市,我们将其顺序编号为1到\(N\),1号城市为首都.这\(N\)个城市由\(N-1\)条单向高速通道连接起来,构成一棵以1号城市(首部)为根的树,高速通道的方向由树中的儿子指向父亲.树按深度分层:根结点深度为0,属于第1层:根结点的子节点深度为1,属于第2层:依此类推,深度为i的结点…
P3235 [HNOI2014]江南乐 Description 两人进行 T 轮游戏,给定参数 F ,每轮给出 N 堆石子,先手和后手轮流选择石子数大于等于 F 的一堆,将其分成任意(大于1)堆,使得这些堆中石子数最多的和最少的相差不超过1(即尽量均分).求先手和后手谁必胜. Input 输入第一行包含两个正整数T和F,分别表示游戏组数与给定的数. 接下来T行,每行第一个数N表示该组游戏初始状态下有多少堆石子.之后N个正整数,表示这N堆石子分别有多少个. Output 输出一行,包含T个用空格隔…
解题报告 题干 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城市由N-1条单向高速通道连接起来,构成一棵以1号城市(首部)为根的树,高速通道的方向由树中的儿子指向父亲.树按深度分层:根结点深度为0,属于第1层:根结点的子节点深度为1,属于第2层:依此类推,深度为i的结点属于第i+l层. 建好高速通道之后,D星人开始考虑如何具体地储存和传输米特资源.由于…
题目描述 小A是一个名副其实的狂热的回合制游戏玩家.在获得了许多回合制游戏的世界级奖项之后,小A有一天突然想起了他小时候在江南玩过的一个回合制游戏. 游戏的规则是这样的,首先给定一个数F,然后游戏系统会产生T组游戏.每一组游戏包含N堆石子,小A和他的对手轮流操作.每次操作时,操作者先选定一个不小于2的正整数M (M是操作者自行选定的,而且每次操作时可不一样),然后将任意一堆数量不小于F的石子分成M堆,并且满足这M堆石子中石子数最多的一堆至多比石子数最少的一堆多1(即分的尽量平均,事实上按照这样的…
传送门 我是什么时候写的这题的qwq 首先,发现关键点的总数被限制了,很自然想到虚树,并且,对于一个关键点,他管理的点显然是一个联通块 然后把虚树先建出来,然后两次dfs,第一次是向祖先更新离每个点最近的关键点是哪个,然后第二次向子树更新,这样就能得到每个虚树上的点属于哪个集合 然后还要考虑不在虚树上的点的贡献.如果虚树上一条边,两端点属于同一集合,那么这条边上不在虚树上的点都是那个集合的;否则就有下面一半点属于下面,上面一半点属于上面.倍增找到分界点,然后更新答案即可 #include<bit…