
RMQ
morejarphone
这个作者很懒,什么都没留下…
展开
-
codeforces 689D (二分 RMQ)
题目链接:点击这里题意:给出两个数列, 有多少对[l,r]满足max{al,al+1...ar}=min{bl,bl+1...br}max\left\{ a_l, a_{l+1}...a_{r}\right \}=min\left\{ b_l,b_{l+1}...b_r\right\}如果固定一个左端点,max数组是递增的,min是递减的, 那么需要寻找一段右端点使得区间的max-min等于0. 这原创 2016-07-20 15:45:30 · 489 阅读 · 0 评论 -
HDU 5726 (RMQ 二分)
题目链接:点击这里题意:每次询问一个区间的gcd,和这个gcd相同的区间的个数。区间的gcd个数最多不会超过log(max)log(max)个, 而且gcd序列又是递减的,所以直接暴力枚举左端点,对右端点二分求出每一个值的区间扔到map里面统计一下就好了。#include <cstdio>#include <cstring>#include <algorithm>#include <iostr原创 2016-07-20 22:08:12 · 513 阅读 · 0 评论 -
HDU 5558 (后缀数组 二分 RMQ)
题目链接:点击这里求一个串每一个后缀和他最长匹配的他之前的后缀.题意: 给定一个串, 下标从0开始, 从这个下标之前的下标中找到一个最小下标使得这两个后缀的最长公共前缀最大, 设这个值为L. 如果存在, 下标+L, 并输出L和他之前的这个下标; 否则输出-1, 和当前下标字符的ASCLL码, 当前下标+1.后缀的前缀这个东西看着就很后缀数组, 于是就用后缀数组来搞. 第一步是找到L. 可以维护一原创 2016-08-01 17:04:14 · 653 阅读 · 0 评论 -
codeforces 733F (树链剖分 RMQ)
题目链接:点击这里题意:给出一个图,每条边有权值和花费c,每次花费c能使的权值-1。给出一个预算,求减完权值后的一个最小生成树。观察到最优的策略必然是只减少一条边的权值。于是首先先将初始权值做一次最小生成树。然后枚举所有的边,如果这条边是生成树的边,求出预算都花在这条边上的结果;如果非树边,就在这条边两个点到他们的LCA路径上求出树边的最大值,然后求出扣掉这个最大树边,加进去这条边的最终结果。中间过原创 2016-11-03 21:33:10 · 990 阅读 · 0 评论 -
HDU 2888 (二维RMQ)
题目链接:点击这里题意:给出一个矩阵,每次询问一个子矩阵中的最大元素,以及最大元素是不是和子矩阵的某个角相等.二维RMQ的板子~#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cmath>#include <algorithm>#define Clear(x,y) memset原创 2016-11-08 18:07:15 · 335 阅读 · 0 评论 -
codeforces 731D (DP 二分 二维RMQ)
题目链接:点击这里题意:给出一个01矩阵,每次询问一个矩形中的最大全1正方形的边长。用dp[i][j]dp[i][j]存储以(i,j)(i,j)为右下角的最大全1正方形,转移方程就是dp[i][j]={min{dp[i−1][j],dp[i][j−1],dp[i−1][j−1]}+10(val[i][j]=1)(val[i][j]=0)dp[i][j]=\left\{\begin{aligned原创 2016-12-02 15:03:57 · 488 阅读 · 0 评论