首页 > TAG信息列表 > Vani

题解——P4556 [Vani有约会]雨天的尾巴

传送门 题意 一棵 \(n\) 个节点的树,\(m\) 次修改,给 \(u\) 到 \(v\) 路径上每一个点一件种类为 \(z\) 的物品,求最后每个节点个数最多的物品种类。 思路 将题意再精简一下就是维护树上单点染色众数,修改是一条链。 (1)树上差分 想到修改一条路径其实可以用树上差分的思想,将路径划分为两

[Vani有约会]雨天的尾巴

线段树合并学习笔记 线段树合并主要(也就是目前我知道的)适用于树上的一些较为复杂详细问题的维护,一般来说要求修改简单且询问少(一次即可)的情况。它可以在比较优秀的复杂度内(\(O(NlogN)\))完成统计。 主要是代码部分。一般来说它的实现都是对于树上每一个节点都开辟一个动态开点的权

[Vani有约会]雨天的尾巴 - 线段树合并

题目描述 首先村落里的一共有 \(n\) 座房屋,并形成一个树状结构。然后救济粮分 \(m\) 次发放,每次选择两个房屋 \((x,~y)\),然后对于 \(x\) 到 \(y\)的路径上(含 \(x\) 和 \(y\))每座房子里发放一袋 \(z\) 类型的救济粮。 然后深绘里想知道,当所有的救济粮发放完毕后,每座房子里存放的

[题解] P4556 [Vani有约会]雨天的尾巴

[题解] P4556 [Vani有约会]雨天的尾巴 ·题目大意 给定一棵树,有m次修改操作,每次修改 \(( x\) \(y\) \(z )\) 表示 \((x,y)\) 之间的路径上数值 \(z\) 的个数 \(+1\) 。最后求每个节点上数量最多的数是哪个,如果有多个相同的则输出较小的。 ·思路分析 想到用线段树合并+树上差分。

P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并

P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并 线段树合并+树上差分。 模板题啊。 线段树合并和 Treap 合并还挺像的,就是从根节点开始将小的合并到大的上面去,然后合并的时候在大的上面做一下处理就好了。。。 这里写的是离线写法。。但这种写法是会破坏大线段树的结构的。。

P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并 题解

Link P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并 Solve 对于每个节点都减一颗权值线段树,然后再用差分的做法,最后统计答案的时候把线段树都合并起来,事实更新最优解 这道题主要是模板,细节蛮多的,要注意 Code #include<bits/stdc++.h> using namespace std; typedef long long

牛客 七夕祭

https://ac.nowcoder.com/acm/contest/1001/C 题面 Vani预先联系了七夕祭的负责人zhq,希望能够通过恰当地布置会场,使得各行中cl感兴趣的摊点数一样多,并且各列中cl感兴趣的摊点数也一样多。 不过zhq告诉Vani,摊点已经随意布置完毕了,如果想满足cl的要求,唯一的调整方式就是交换两个相

[ Vani有约会 ] 雨天的尾巴 /【模板】线段树合并

题目链接 Solution 对每个节点维护一个权值线段树,线段树上就维护最大值以及最大值出现的节点。利用树上查分的思想,在 \(x\),\(y\) 位置 \(+1\),在 \(LCA(x, y)\) 位置 \(-1\),\(fa_{LCA(x, y)}\) 位置 \(-1\)。 更新完后不断把线段树向上合并。简单来说,当前线段树 = 该节点所有子树维

P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并

线段树合并 线段树合并即合并两颗权值线段树,合并方法非常简单 但是这道题我调了很久 原因:数组开小了QAQ 线段树合并一般数组开\(3nlogn\)(更大也无伤大雅) 我\(ls\),\(rs\)数组开小了,导致玄学错误,结果晕头转向,最后才发现数组开小了 \(C++\)数组开小很多情况下不报错,因为它去调用其他

【JZOJ】3423. Vani和Cl2捉迷藏

Description Time Limits: 1000 ms Memory Limits: 262144 KB vani和cl2在一片树林里捉迷藏…… 这片树林里有N座房子,M条有向道路,组成了一张有向无环图。 树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔。如果从房子A沿着路走下去能够到达B,那么在A和B里的人