【树剖】CF916E Jamie and Tree】的更多相关文章

CF916E Jamie and Tree 题意翻译 有一棵n个节点的有根树,标号为1-n,你需要维护以下三种操作 1.给定一个点v,将整颗树的根变为v 2.给定两个点u, v,将lca(u, v)所在的子树都加上x 3.给定一个点v,你需要回答以v所在的子树的权值和 Translated by mangoyang 错误日志: 第一次 \(debug\) 是 \(jump\) 数组第二维开小了: 交了一次错了, 第二次没有特判修改/查询节点等于根的情况: 第三次 \(RE\) 又是数组开销了 .…
CF916E Jamie and Tree 题意翻译 有一棵\(n\)个节点的有根树,标号为\(1-n\),你需要维护一下三种操作 1.给定一个点\(v\),将整颗树的根变为\(v\) 2.给定两个点\(u, v\),将\(lca(u, v)\)所在的子树都加上\(x\) 3.给定一个点\(v\),你需要回答以\(v\)所在的子树的权值和 输入输出格式 输入格式: The first line of input contains two space-separated integers \(n\…
好吧这其实应该不是树剖... 因为只要求子树就够了,dfs就好了 大概就是记录一个全局根root 多画几幅图会发现修改时x,y以root为根时的lca为以1为根时的lca(x,y),lca(root,x),lca(root,y)中深度最大的一个 然后就可以做了 然后分类讨论当前更改操作节点x(更新即LCA(x,y),询问则就是x)和root的关系: (接下来有关操作都以1为根) 1.x=root: 即询问/修改整颗树的权值和 2.root不在x的子树内:这样的话这里x的子树是没有被影响到的,直接…
题面 解析 这题考试时刚了四个小时. 结果还是爆零了 主要就是因为\(lca\)找伪了. 我们先考虑没有操作1,那就是裸的线段树. 在换了根以后,主要就是\(lca\)不好找(分类讨论伪了). 我们将一开始以\(1\)为根的图作为原图. 仔细思考一下, 我们会发现只有当原图上的\(lca\)在\(1\)和当前的根的路径上时,\(lca\)才会发生变化. 考试时怎么没发现 而当\(lca\)变化后,我们画一下图, 就会发现, 现在的\(lca\)就是两个点与根的\(lca\)中深度较大的一个. (…
You are given a node-labeled rooted tree with n nodes. Define the query (x, k): Find the node whose label is k-th largest in the subtree of the node x. Assume no two nodes have the same labels. Input The first line contains one integer n (1 <= n <=…
ιYou are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, 3...N-1. We will ask you to perfrom some instructions of the following form: CHANGE i ti : change the cost of the i-th edge to tior QUERY a b : ask f…
You are given a tree with N nodes. The tree’s nodes are numbered 1 through N and its edges are numbered 1 through N − 1. Each edge is associated with a weight. Then you are to execute a series of instructions on the tree. The instructions can be one…
E. Jamie and Tree time limit per test 2.5 seconds memory limit per test 256 megabytes input standard input output standard output To your surprise, Jamie is the final boss! Ehehehe. Jamie has given you a tree with n vertices, numbered from 1 to n. In…
题目 SP375 QTREE - Query on a tree 解析 也就是个蓝题,因为比较长 树剖裸题(基本上),单点修改,链上查询. 顺便来说一下链上操作时如何将边上的操作转化为点上的操作: 可以看到这个题然我们对边进行操作,我们的树剖是对节点进行操作的,所以我们考虑把边权变为点权. 发现我们节点的点权是连向它的边的边权,所以我们要操作边权的话,我们操作的实际上是其连向点的点权, 假设我们要修改1-4之间的这两条边 我们修改的实际上就是这2,4两个点 我们节点的点权为其父节点连向它的边的边…
传送门 ODTODTODT板子题. 支持子树01覆盖,路径01覆盖,询问一个点的值. 思路:当然可以用树剖+线段树,不过树剖+ODTODTODT也可以很好的水过去. 注意修改路径时每次跳重链都要修改. 不会ODTODTODT的点这里 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isd…