RMQ板子】的更多相关文章

对于RMQ这种静态最值询问, 用线段树的话查询过慢, 一般用ST表预处理后O(1)查询, 下以最大值查询为例, 这里假定$n$不超过5e5 void init() { Log[0] = -1; REP(i,1,n) f[0][i] = a[i], Log[i]=Log[i>>1]+1; REP(j,1,19) for (int i=0;i+(1<<j-1)-1<=n; ++i) { f[j][i] = max(f[j-1][i],f[j-1][i+(1<<j-1)…
今天看了RMQ问题 ST的实质是动归 于是我来回顾一下LCA(的各种写法) 因为每次考试发现自己连LCA都写不好 费时 First of all, RMQ板子: [一维] #include<bits/stdc++.h> using namespace std; const int N = 50010; int n, q, a, b; int c[N]; int dpmn[N][20], dpmx[N][20]; template <typename T> T read(){ T N…
LCA(Lowest Common Ancestor 最近公共祖先)定义如下:在一棵树中两个节点的LCA为这两个节点所有的公共祖先中深度最大的节点. 比如这棵树 结点5和6的LCA是2,12和7的LCA是1,8和14的LCA是4. 这里讲一下将LCA转化成RMQ问题,进而用st表求解. 首先我们跑一遍dfs,并记录经过的每一个结点(包括回溯的时候),存到一个数组中,这样我就将树的问题转化成线性问题. 等下上图的树好像有些大 这就好多了. 然后就是dfs序列和深度序列 dfs序   1  2  5…
嘟嘟嘟 一道RMQ板子题,分别维护最大值和最小值,不解释. #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<cstdlib> #include<cctype> #include<stack> #include<queue> #include<ve…
[题目描述:] 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. [输入格式:] 输入一共有两行,第一行为n,k. 第二行为n个数(<INT_MAX). [输出格式:] 输出共两行,第一行为每次窗口滑动的最小值 第二行为每次窗口滑动的最大值 输入样例#: - - 输出样例#: - - - - 输入输出样例 [算法分析:]  线段树使用结构体同时维护区间最小值和最大值 没有修改只有建树和查询操…
手速狗从西安回来一只浑浑噩噩,好不容易迎来一场送饭比赛体验一把河南的优势,结果被高中生狂虐,无缘奖金..我的奖品梦就这样一次次被打破.... A -- Reverse the lights 最后半小时lzq送(抢)来代码,据说只能翻转一次,嗯,于是结合数据优势变成了shabi题,直接暴力模拟找最小值. #define ll long long const ll inf=0x3f3f3f3f3f3f3f3f; ll a[10010]; ll solve(ll n,ll k) { ll i,j,an…
RMQ 常用的数据结构之一 直接上代码 马克好来 是个好板子 #include <stdio.h> #define min(a,b) a<b ? a : b ],d[][]; void RMQ(int n) { ; i<n; i++) d[i][]=arr[i]; ; (<<j)<=n; j++) ; i+(<<j)-<n; i++) d[i][j] = min(d[i][j-],d[i+(<<(j-))][j-]); } int S…
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每行包含两个正整数x.y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树). 接下来M行每行包含两个正整数a.b,表示询问a结点和b结点的最近公共祖先. 输出格式: 输出包含M行,每行包含一个正整数,依次为每一个询问的结果. 输入输出样例 输入样例#1: 复制 5 5 4 3 1 2 4…
链接:https://ac.nowcoder.com/acm/contest/549/F来源:牛客网 题目描述 小A这次来到一个景区去旅游,景区里面有N个景点,景点之间有N-1条路径.小A从当前的一个景点移动到下一个景点需要消耗一点的体力值.但是景区里面有两个景点比较特殊,它们之间是可以直接坐观光缆车通过,不需要消耗体力值.而小A不想走太多的路,所以他希望你能够告诉它,从当前的位置出发到他想要去的那个地方,他最少要消耗的体力值是多少. 输入描述: 第一行一个整数N代表景区的个数.接下来N-1行每…
就是求子矩阵中最大值与最小值的差... 板子都套不对的人.... #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <set> #include <vector> #include <stack> #include <queue> #include &…
Bob’s Race Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3905    Accepted Submission(s): 1245 Problem Description Bob wants to hold a race to encourage people to do sports. He has got trouble…
Problem Description Paul draw a big m*n matrix A last month, whose entries Ai,j are all integer numbers ( 1 <= i <= m, 1 <= j <= n ). Now he selects some sub-matrices, hoping to find the maximum number. Then he finds that there may be more tha…
存板子.O(nlogn)预处理,O(1)查询.空间O(nlogn). int d[1000006][25]; int mn[1000006]; void rmq_init() { for(int i=1;i<=n;i++) d[i][0]=a[i]; for(int j=1;(1<<j)<=n;j++) for(int i=1;i+(1<<j)-1<=n;i++) d[i][j]=min(d[i][j-1],d[i+(1<<(j-1))][j-1]);…
前言 再过两天就\(NOIP2018\)了. 于是,我决定不做其他题目,开始一心一意刷板子了. 这篇博客记录的就是我的刷板子计划. [洛谷3383][模板]线性筛素数 这种普及-的题目我还写挂了两次(感觉自己废掉了). 好吧,第一次写挂是因为数组开小了,第二次写挂是因为没有特判\(1\)不是质数... ... class Class_LineSiever { private: #define PrimeSize 1000000 bool IsNot[PrimeSize+5]; public: i…
https://ac.nowcoder.com/acm/contest/700/I 二维RMQ,贴个板子,注意爆内存,用char就可以了,char也可以存负数. 然后二分枚举对角线长度,理由很简单. 矩阵变大,极值只会变大不会变小.满足单调性. #include<bits/stdc++.h> using namespace std; #define MAXN 501 int n,m,g; int rec[MAXN][MAXN]; char dp[MAXN][MAXN][11][11]; cha…
1. 概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值.这两个问题是在实际应用中经常遇到的问题,下面介绍一下解决这两种问题的比较高效的算法.当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍. 2.RMQ算法 对于该问题,最容易想到的解决方案是遍历,复杂度是O(n).但当数据量…
题目链接 贴个板子.. #include<bits/stdc++.h> using namespace std; int n,q; ],d1[][],d2[][]; void RMQ_init() //预处理 { ;i<n;++i) d1[i][]=d2[i][]=a[i]; ;(<<j)<=n;j++) ;i+(<<j)-<n;i++) { d1[i][j]=min(d1[i][j-],d1[i+(<<(j-))][j-]); d2[i]…
正解:$rmq$/主席树 解题报告: 传送门! 好像看过这题挺多次辣,,,$QwQ$ 之前$NOIp$的时候$cjk$学长讲课讲了这题(虽然那时候的$gql$太菜辣并麻油落实这道_(:з」∠)_,然后寒假考试考了这道,然后现在说搞下主席树又碰到这题辣_(:з」∠)_ 昂然后先港下题意,,,大概就给定一个序列求前$k$大区间和$QwQ$ 分别港下$rmq$和主席树趴$QwQ$ 先港$rmq$趴$QwQ$ 首先区间求和显然先搞下前缀和,这个显然是要有的$QwQ$ 考虑设$f_{i,l,r}$表示左端…
板子测试POJ1330,一发入魂,作者是KuangBin神犇,感谢?‍ #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 10010; int rmq[2 * MAXN]; // rmq数组,就是欧拉序列对应的深度序列 struct ST { int mm[2 * MAXN]; int dp[2 * MAXN][20]; // 最…
最小费用最大流板子,没有压行.利用重标号让边权非负,用Dijkstra进行增广,在理论和实际上都比SPFA增广快得多.教程略去.转载请随意. #include <cstdio> #include <cstring> #include <algorithm> #include <functional> #include <queue> using namespace std; ; const int inf = 0x33333333; typede…
ISAP求最大流,敲了一发板子,无压行,教程略去.转载请随意. #include <cstdio> #include <cstring> #include <algorithm> #include <vector> using namespace std; ; const int inf = 0x33333333; struct edge { int to, rev, cap; }; int n; vector<edge> G[maxn]; vo…
倍增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…
3489: A simple rmq problem Time Limit: 40 Sec  Memory Limit: 600 MBSubmit: 1594  Solved: 520[Submit][Status][Discuss] Description 因为是OJ上的题,就简单点好了.给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可能大.如果找不到这样的数,则直接输出0.我会采取一些措施强制在线. Input 第一行为两个整…
训练指南P198 题意:给出一个非降序排列的整数数组a1, a2…… an,你的任务是对于一系列询问(i,j),回答ai, ai+1 ……aj 中出现的次数最多的次数 这题不仅学到了rmq的应用还学到了游程编码 对于一组数 -1, 1, 1, 2, 2, 2, 4就可以编码成(-1, 1), (1, 2), (2, 3), (4, 1),其中(a, b)表示 b 个连续的 a,cnt[i]表示第 i 段中数出现的次数.num[p] 表示p位置的数所在的段的标号, left[p]表示p位置的数所在…
前言 原创文章,转载引用务必注明链接. 注意:拍照自带抖动功能,画质大家凑合着看.冬日天气干燥,手触摸板子前建议流水洗手或者握持大体积导电体将静电放走. 本文使用Markdown写成,为获得更好的阅读体验和正常的图片.链接,请访问我的博客文章地址: http://www.cnblogs.com/sjqlwy/p/up_powerup.html 上电 本来想先硬件解析的,可是想想开机上电之后再解析更靠谱,不然连led灯在哪都不知道. 然后一脸懵逼,没有已出版的<Getting Started>类…
1 复位后的启动地址 1) 复位后,启动地址在or1200_defines.v最后宏定义,atlys板子的目录:orpsocv2\boards\xilinx\atlys\rtl\verilog\include\or1200_defines.v OR1200_BOOT_ADR[31:28] (即最高4位)是 wishbone的从机地址,对应了wishbone从机ROM设备的从机地址. 从设备的内部地址是 0x100,即对应OR启动的地址. 2)在文件 orpsocv2\boards\xilinx\…
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1174 题意:中文题诶- 思路:RMQ模板题 关于RMQ: http://blog.csdn.net/liang5630/article/details/7917702 代码: #include <bits/stdc++.h> #define MAXN 10010 using namespace std; ], a[MAXN]; //dp[i][j]存储从下…
Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 2229    Accepted Submission(s): 252 Problem Description The shorter, the simpler. With this problem, you should be convinced of this truth.    Y…
Problem F: Tanks a Lot Imagine you have a car with a very large gas tank - large enough to hold whatever amount you need. You are traveling on a circular route on which there are a number of gas stations. The total gas in all the stations is exactly…
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<=…