poj 3264 倍增 ST表】的更多相关文章

#include<iostream> #include<cmath> using namespace std; ; int a[maxn]; ]; ]; int quick(int a,int n) { ; while(n) { ) ans*=a; a=a*a; n>>; } return ans; } int main() { int n,m; cin>>n>>m; ;i<=n;i++) cin>>a[i]; ;i--) {…
链接:http://poj.org/problem?id=3368 题意:给出n个连续单调不递减数,q次询问,每次询问区间(L,R)出现频率最多的数,问出现了多少次 思路:因为n个数是单调不递减的,所以可以预处理一个频率数组cnt[ ],cnt[ i ]记录某个数到 i 位置时,出现了多少次,再预处理一个index数字,记录每一段相同的数字,最右端的位置,因为每次询问的时候可能会出现一部分连续的数被L这个位置隔开,cnt[i]只记录了某个数到i位置出现了多少次,被隔开的部分多算了,所以需要减去,…
命题描述 给定一个长度为 \(n\) 的序列,\(m\) 次询问区间最大值 分析 上面的问题肯定可以暴力对吧. 但暴力肯定不是最优对吧,所以我们直接就不考虑了... 于是引入:倍增 首先,倍增是个什么东西? 在这里转一篇写的超棒的blog,点我.要是这都没看懂你就连小白兔都不如我就无语了. 总的来说,其实就是倒着运用二分的思想,从需求小的慢慢倍增把答案更新到需求大的 ST表就是一种常见的倍增思想的运用 关于ST表 ST表和树状数组,线段树这两种算法一样,是一种用于解决 \(RMQ(Range M…
正题 题目链接:https://www.luogu.com.cn/problem/P7599 题目大意 \(n\)棵树,在某棵树上时可以选择向左右两边第一棵比它高的树跳,现在\(q\)次询问从\([A,B]\)中某个点出发跳到\([C,D]\)中某个点的最少次数. \(1\leq n\leq 2\times 10^5\) 解题思路 考虑到主要的阈值\([B+1,C-1]\)中的最大值,一旦超过了这个值就只需要考虑是否大于\([C,D]\)中的最大值就好了. 那么我们考虑如何选取起点,首先我们显然…
[HAOI2007]理想的正方形 题目描述 有一个\(a*b\)的整数组成的矩阵,现请你从中找出一个\(n*n\)的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表示\(a,b,n\)的值 第二行至第\(a+1\)行每行为\(b\)个非负整数,表示矩阵中相应位置上的数.每行相邻两数之间用一空格分隔. 输出格式: 仅一个整数,为\(a*b\)矩阵中所有\(n*n\)正方形区域中的最大整数和最小整数的差值"的最小值. 输入输出样例 输入样例…
Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 52328   Accepted: 24551 Case Time Limit: 2000MS Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer Joh…
传送门:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 66241   Accepted: 30833 Case Time Limit: 2000MS Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in…
题意: 求区间max-min st表模板 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define N 50010 using namespace std; ],rmax[N][],n,l,r,q; int read() { ,neg=; char j=getchar(); ';j=getchar()) ; ';j=getchar()) ret=ret*+j-…
链接:http://poj.org/problem?id=3264 题意:给n个数,求一段区间L,R的最大值 - 最小值,Q次询问 思路:ST表模板,预处理区间最值,O(1)复杂度询问 AC代码: #include<iostream> #include<vector> #include<cstdlib> #include<cstdio> #include<algorithm> #include<cmath> #include<s…
[题目链接] poj.org/problem?id=3693 [题目大意] 求一个串重复次数最多的连续重复子串并输出,要求字典序最小. [题解] 考虑错位匹配,设重复部分长度为l,记s[i]和s[i+l]前缀匹配得到的最长长度为r, 枚举所有的l和i,得到r,那么答案就是r/l+1的最大值. 计算任意后缀的最长公共前缀可以利用后缀数组+ST表来解决, 两个后缀的最长公共前缀就是他们名次之间的h数组的最小值. 显然,枚举i和l的复杂度达到了O(n2),是没有办法完成统计的, 我们发现每个区段只会存…