SP8791 DYNALCA - Dynamic LCA】的更多相关文章

SP8791 DYNALCA - Dynamic LCA 有一个森林最初由 \(n (1 \le n \le 100000)\) 个互不相连的点构成 你需要处理以下操作: link A B:添加从顶点A到B的边,使A成为B的子节点,其中保证A是一个根顶点,A和B在不同的树中. cut A:切断点A到其父节点的边,保证A是一个非根节点. lca A B:输出A和B的最近共同祖先,保证A和B在同一棵树中. 最开始我是这么写的 void LCA(int x,int y) { access(x),spl…
原题传送门 这题用Link-Cut-Tree解决,Link-Cut-Tree详解 这道题的难点就在如何求LCA: 我们珂以先对其中一个点进行access操作,然后对另一个点进行access操作,因为LCA到根的边一定都由第一次access变为实边了,在之后的这一次access操作的最后一条从虚边变为实边的边的父亲就是两点的LCA 回求LCA后,剩下的几乎是模板,但有两种做法 1.建立虚拟点n+1,保证一直是一颗有n+1个点的树,写起来比较无脑(lct部分珂以复制),常数比较大 #include…
\(\color{#0066ff}{ 题目描述 }\) 有一个森林最初由 n (\(1 \le n \le 100000\))n(\(1\leq n\leq 100000\)) 个互不相连的点构成 你需要处理以下操作: link A B:添加从顶点A到B的边,使A成为B的子节点,其中保证A是一个根顶点,A和B在不同的树中. cut A:切断点A到其父节点的边,保证A是一个非根节点. lca A B:输出A和B的最近共同祖先,保证A和B在同一棵树中. \(\color{#0066ff}{输入格式}…
http://www.spoj.com/problems/DYNALCA/ 此题link.cut要求不能换根,当然也保证link时其中一个点必定已经是根. 方法: void link(Node *x,Node *y) { access(x);splay(x); x->fa=y; } void cut(Node *x) { access(x);splay(x); x->ch[]->fa=NULL;x->ch[]=NULL; } 曾经的错误思路: void cut(Node *x) {…
Dynamic LCA Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForcesGym. Original ID: 100512D64-bit integer IO format: %I64d      Java class name: (Any) 解题:LCT #include <bits/stdc++.h> using namespace std; ; struct arc { i…
在今天三黑(恶意评分刷上去的那种)两紫的智推中,突然出现了P3834 [模板]可持久化线段树 1(主席树)就突然有了不详的预感2333 果然...然后我gg了!被大佬虐了! hdu 2665 Kth number 题意就不写了,太经典了(可我还是不会这题,我太菜了) 大佬的题解写的太神仙了,我这么菜的人都看懂了2333,所以我就不写了... 不过这题是真的坑啊...老师在上面讲的时候,我们开始提交(他们交主席树,我交整体二分)然后等讲完我们还没过23333 MLE.TLE.WA(可能还有CE)轮…
P6845 [CEOI2019] Dynamic Diameter 题意 一颗带权树,每次更改一条边的权,每次修改后求出最大直径.强制在线. 思路 \(O(n\log^2n)\) 的暴力做法. 根据经典结论,对于两个点集的树上最大直径(权值非负),并集点集的树上最大直径的端点一定是原四个端点中的两个. 那么我们就可以用线段树维护点集,合并时 \(O(\log n)\) 查询两点间距离合并就可以做到 \(O(n\log^2n)\) 的复杂度了. 思考如何支持在线修改边权.两点间距离为 \(dis(…
1.var 1.均是声明动态类型的变量. 2.在编译阶段已经确定类型,在初始化的时候必须提供初始化的值. 3.无法作为方法参数类型,也无法作为返回值类型. 2.dynamic 1.均是声明动态类型的变量. 2.运行时检查类型,不存在语法类型,在初始化的时候可以不提供初始化的值. 3.反射时简化代码,但会产生性能的缺失.…
3083: 遥远的国度 Time Limit: 10 Sec  Memory Limit: 1280 MBSubmit: 3127  Solved: 795[Submit][Status][Discuss] Description 描述zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度.当zcwwzdjn准备进入遥远的国度继续追杀时,守护神RapiD阻拦了zcwwzdjn的去路,他需要zcwwzdjn完成任务后才能进入遥远的国度继续追杀. 问题是这样的:遥远的国度有n个城市,这…
3626: [LNOI2014]LCA Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2050  Solved: 817[Submit][Status][Discuss] Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q次询问,每次询问给出l r z,求sigma_{l<=i<=r}dep[LC…
一.遍历ExpandoObject /// <summary> /// 遍历ExpandoObject /// </summary> [TestMethod] public void GoThroughExpandoObject() { dynamic dynEO = new ExpandoObject(); dynEO.number = ; dynEO.Increment = new Action(() => { dynEO.number++; }); Console.Wr…
1. 如何通过C# 的dynamic 创建如下json 对象? { "query": { "match": [{ "name": "jk", "age": "25" }, { "realName": "zs", "realAge": "9" }] }, "page": 5 } 2. 通过…
1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 7143  Solved: 2968[Submit][Status][Discuss] Description 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可以改变一些a[i…
Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数表示 N个节点上的权值.  接下来 M行,每行包含两个整数x和 y,表示初始的时候,点x和点y 之间有一条无向边, 接下来 T行,每行描述一个操作,格式为“Q x y k”或者“L x y ”,其含义见题目描述部分. Output 对于每一个第一类操作,输出一个非负整数表示答…
Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文. Input 第一行两个整数N,M. 第二行有N个整数,其中第i个整数表示点i的权值. 后面N-1行每行两个整数(x,y),表示点x到点y有一条边. 最后M行每行两个整数(u,v,k),表示一组询问. Output M行,表示每个询问的答案. Sample Input…
当年在ASP.NET MVC 1.0时代我提到,在开发时最好将视图的Model定制为强类型的,这样可以充分利用静态检查功能进行排错.不过有人指出,这么做虽然易于静态检查,但是定义强类型的Model类型实在是太麻烦了,因此也出现了基于SmartBag等折衷方案.强类型是一种极端方案,而在C# 4.0中我们又可以使用另一个极端,那就是让Model成为dynamic类型,这样在视图中便可以完全自由地获取数据了.不过,在使用匿名对象的情况下视图会抛出奇怪的"无法找到成员"异常,我们必须解决这个…
March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. 前言 本文翻译自TopCoder上的一篇文章: Dynamic Programming: From novice to advanced ,并非严格逐字逐句翻译,其中加入了自己的…
倍增LCA板子,没有压行,可读性应该还可以.转载请随意. #include <cstdio> #include <cstring> #include <algorithm> #include <vector> using namespace std; const int maxn = 5e5; int n, m, rt; vector<int> G[maxn]; ; ]; int dep[maxn]; void dfs(int u, int fa…
Clay非常类似于ExpandoObject, 可以看做是ExpandoObject的加强版. 它们能够让我们在不需要定义类的情况下,就构建出我们想要的对象.Clay和ExpandoObject相比,提供了更加灵活的语法支持,让我们像写javascript代码一样写C#代码,同时还能够用于构建多层级的复杂对象. 阅读目录: 一.多种方式初始化对象 二.构建神奇的Array 三.为对象动态添加方法 四.动态的实现接口 五.Clay的应用背景 六.Clay的Sample 一,多种方式初始化对象 1,…
Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4478   Accepted: 1292 Description Yixght is a manager of the company called SzqNetwork(SN). Now she's very worried because she has just received a bad news which denotes that DxtNet…
Description 给出一个$n$个节点的有根树(编号为$0$到$n-1$,根节点为$0$). 一个点的深度定义为这个节点到根的距离$+1$. 设$dep[i]$表示点$i$的深度,$lca(i,j)$表示$i,j$的最近公共祖先. 有$q$次询问,每次询问给出$l\;r\;z$,求$\sum_{i=l}^{r}dep[lca(i,z)]$. (即求在$[l,r]$区间内的每个节点$i$与$z$的最近公共祖先的深度之和) Input 第一行$2$个整数$n,q$. 接下来$n-1$行,分别表…
using Newtonsoft.Json; 之前拼接两个json串,是用的这样的代码 , json1.Length - ); json2 = json2.Insert(json2 - , tmp); 虽然效率挺高的,但是代码很丑啊 字符串操作的缺陷: 1)不优雅 2)不通用 3)没有办法替换原有的值 后来想起可以用dynamic类型来实现 如 string json111, json112; json111 = "{'a':1,'b':2,'d':{}}"; json112 = &q…
private static string GetNameValue(object value) { dynamic obj = value; try { return obj.Name; } catch { return null; } }…
Euler Tour Tree最大的优点就是可以方便的维护子树信息,这点LCT是做不到的.为什么要维护子树信息呢..?我们可以用来做fully dynamic connectivity(online). Euler Tour Tree 维护将树中的边u--v变成u->v,v->u后的Euler Tour. 换根: 因为Euler Tour是一个环,那么我们可以在任意一个k->u的地方切断,然后把这段东西接到最后去,这样就把u变成根了 Link: 先换根,然后添加u->v与v->…
写过javascript的人都知道js解析json 1:(JSON) 字符串转换为对象. var str = '{"name":"lsw","hobby":"free"}'; 1.1:JSON.parse(str); 2:对象解析出字符串 var a = {a:1,b:2}; JSON.stringify(a) 3:注意:浏览器兼容问题 网上有json2.js文件 或者jquery文件 问题来了c# 写过webapi 或者we…
Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息 http://www.cnblogs.com/zhwx/archive/2012/08/28/2660555.html 对象的方法能定义成静态(static).虚拟(virtual).动态(dynamic)或消息处理(message).请看下面 的例子: TFoo = class procedure IAmAStatic; procedure IAmAVirtual; virtual; procedur…
PIVOT PIVOT在行转列的时候经常用到,最便捷的方式就是通过示例来理解它的作用. 示例1 Query to Return Select Product Data from AdventureWorks SELECT PRODUCT.Name AS product_name , PRODUCT.Color AS product_color , PRODUCT_INVENTORY.LocationID , PRODUCT.ReorderPoint , PRODUCT_INVENTORY.Qua…
inline int lca(int x,int y){ if(x>y) swap(x,y); ]][x]]<h[rmq[log[y-x+]][y-near[y-x+]+]])? rmq[log[y-x+]][x]:rmq[log[y-x+]][y-near[y-x+]+];} 查询代码如上 build(,); ;i<=N;i++) rmq[][i]=list[i]; ,j=,k=;i<=N;log[i]=j,near[i]=k,i++) ) j++,k*=; ,k=;k<=…
@property和@synthesize复习 @property生成setter和getter的声明,同时生成属性对应的成员变量,并且前面加一个下划线_.如果将getter和setter的实现同时重写之后,它不会帮助生成属性对应的变量名. (TestOne.m)这种写法,无法编译通过,因为_name已经不存在. @interface TestOne : NSObject @property (nonatomic, copy) NSString *name; @end @implementati…
该类型可以实现的是动态添加属性和移除属性,有点类似 js 中对象的操作,非常灵活 static void Main(string[] args) { dynamic obj = new System.Dynamic.ExpandoObject(); obj.name = "jj"; obj.age = ; obj.gender = ; foreach (var item in (IDictionary<string,object>)obj) { Console.WriteL…