LCA rmq st model】的更多相关文章

LCA:倍增 memset(p,-,sizeof(p)); inline void dfs(int u) { ;i=e[i].next) { int v=e[i].v; ) { deep[v]=deep[u]+; p[v][]=u; dfs(v); } } } void init() { ;(<<j)<=n;j++) ;i<=n;i++) ]!=-) p[i][j]=p[p[i][j-]][j-]; } //deep[1]的初始为1 int lca(int a,int b) { i…
https://www.luogu.org/problemnew/show/P3379 1.欧拉序+rmq(st) /* 在这里,对于一个数,选择最左边的 选择任意一个都可以,[left_index,right_index],深度都大于等于这个数的深度 */ #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <time.h> #inc…
How far away ? Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Submission(s): Problem Description There are n houses in the village and some bidirectional roads connecting them. Every day peole always like…
首先看到这题, 由于要最大, 肯定是求最大生成树 那么 o(n2) dfs 求任意点对之间的最小边是可以想到的 但是看看数据范围肯定TLE 于是暴力出来咯, 不过要注意query的时候判断的时候要 m+-1 但是递归下去要用m , 可以画图举特例分析 1AC 代码: #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #in…
首先,众所周知,求LCA共有3种算法(树剖就不说了,太高级,以后再学..). 1.树上倍增(ST表优化) 2.RMQ&时间戳(ST表优化) 3.tarjan(离线算法)不讲..(后面补坑啦!) 一.树上倍增 这种方法原理是这样的: 我们可以知道,最朴素的算法就是一步一步的并查集往上找,知道找到2个点并查集相同,即为LCA 但这种算法的时间效率为O(NM)看到0<n,m<5*10^5我们就知道一定会炸. 但是,我们可以发现给出树后,每个点的LCA及走到LCA的路径一定是固定的. 所以可以…
hdu 3183 A Magic Lamp RMQ ST 坐标最小值 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 题目大意: 从给定的串中挑出来m个数使得剩余的数字最小,串的序列不能改变 思路: 将问题转化为求在n个数中挑选n-m个数,使之最小.假设最极端的情况,所有最大的数字都在左侧,占据了m个位置,那么我们需要挑选的最小的数字的第一位就是在m+1位上.依次类推,第二位在m+2位上,最后一位也就在原串的最后一位上.反过来,假设最大的数…
NYOJ 119 士兵杀敌(三) RMQ ST 题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=119 思路: ST在线 预处理O(nlogn) 查询O(1) 运行时间:828ms 可以用31-__builtin_clz(r-l+1)来代替k=(int)(log(r-l+1.0)/log(2.0)) 这样还能稍快20ms 代码: #include <iostream> #include <stdio.h> #include…
我校是神校,作业竟然选自POJ,难道不知道“珍爱生命 勿刷POJ”么? 所有注明模板题的我都十分傲娇地没有打,于是只打了6道题(其实模板题以前应该打过一部分但懒得找)(不过感觉我模板还是不够溜要找个时间刷一发). 没注明模板题的都是傻逼题,其实也是模板题. 题目大致按照傻逼程度从大到小排序. POJ 3264 Balanced Lineup 题意:n个数,m个询问,每次问max[l,r]-min[l,r]. 题解:这道题竟然没标注模板题真是惊讶... #include<cstdio> #inc…
题意: 知道了一颗有  n 个节点的树和树上每条边的权值,对应两种操作: 0 x        输出 当前节点到 x节点的最短距离,并移动到 x 节点位置 1 x val   把第 x 条边的权值改为 val 题意: 知道了一颗有  n 个节点的树和树上每条边的权值,对应两种操作: 0 x        输出 当前节点到 x节点的最短距离,并移动到 x 节点位置 1 x val   把第 x 条边的权值改为 val LCA +RMQ+树状数组 #include <cstdio> #includ…
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13390 Accepted Submission(s): 5018 Problem Description There are n houses in the village and some bidirectional roads connecting them. Every day peo…