1128 - 咸鱼拷问

Time Limit:3s Memory Limit:128MByte

Submissions:380Solved:118

DESCRIPTION

给你两个序列A,B。每个序列有N个元素,我们定义第i个位置的咸鱼值为min(A[i],A[i-1]…A[i-B[i]+1])*max(A[i],A[i-1]….A[i-B[i]+1]).。
现在咸鱼王想知道所有的咸鱼值,于是抓住了你,让你回答这道题。
你能回答他吗?

INPUT
第一行包括一个整数N(1<=N<=1e5)
第二行包括N个整数,表示为A[i] (|A[i]| <= 10^9)
第三行包括N个整数,表示为B[i] ( 1 <= B[i] <= i)

OUTPUT
输出N行,第i行表示第i个咸鱼值。

SAMPLE INPUT
5
1 2 3 4 5
1 2 1 2 3

SAMPLE OUTPUT
1
2
9
12
15

SOLUTION
求最值且不需要更新,RMQ能做到 NlogN的预处理 O(1)的查询,直接套模板
注意查询区间为[0,N)
 
 #include<bits/stdc++.h>
using namespace std;
#define LL long long
#define MAXN ((100000<<2)+15)
int A[],B;
int d[][][];
void rmq(int n)
{
for(int i=;i<n;++i) d[][i][]=d[][i][]=A[i];
for(int j=;(<<j)<=n;++j){
for(int i=;i+(<<j)-<n;++i){
d[][i][j]=min(d[][i][j-],d[][i+(<<(j-))][j-]);
d[][i][j]=max(d[][i][j-],d[][i+(<<(j-))][j-]);
}
}
}
int RMQ(int L,int R,int x)
{
int k=;
while((<<(k+))<=R-L+) k++;
if(x==) return min(d[][L][k],d[][R-(<<k)+][k]);
else return max(d[][L][k],d[][R-(<<k)+][k]);
}
int main()
{
int t,n,m,i,j,k,opt,l,r,v;
scanf("%d",&n);
for(i=;i<n;++i) scanf("%d",&A[i]);
rmq(n);
for(i=;i<n;++i) {
scanf("%d",&B);
printf("%lld\n",(LL)RMQ(i+-B,i,)*RMQ(i+-B,i,));
}
return ;
}
 

玲珑oj 1128 RMQ模板的更多相关文章

  1. Zeratul的完美区间(线段树||RMQ模板题)

    原题大意:原题链接 给定元素无重复数组,查询给定区间内元素是否连续 解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(r-l) 解法一:线段树(模板题) ...

  2. Poj 3264 Balanced Lineup RMQ模板

    题目链接: Poj 3264 Balanced Lineup 题目描述: 给出一个n个数的序列,有q个查询,每次查询区间[l, r]内的最大值与最小值的绝对值. 解题思路: 很模板的RMQ模板题,在这 ...

  3. POJ 3264:Balanced Lineup(RMQ模板题)

    http://poj.org/problem?id=3264 题意:给出n个数,还有q个询问,询问[l,r]区间里面最大值和最小值的差值. 思路:RMQ模板题,开两个数组维护最大值和最小值就行. #i ...

  4. POJ3264 Balanced Lineup [RMQ模板]

    题意:有n头牛,输入他们的身高,求某区间身高的极值的差(max-min), 用RMQ模板,同时构造求极大值和极小值的两个数组. //poj3264 #include <iostream> ...

  5. RMQ模板

    RMQ:范围最小值问题.给出一个n个元素的数组A1,A2,...,An,设计一个数据结构支持查询操作Query(L,R):计算min{AL,AL+1,...,AR}. 每次用一个循环来求最小值显然不够 ...

  6. 二维RMQ模板

    int main(){ ; i <= n; i++) ; j <= m; j++) { scanf("%d", &val[i][j]); dp[i][j][][ ...

  7. LCA上的RMQ模板算法

    How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  8. 倍增算法总结 ( 含RMQ模板)

    部分题目来自<算法竞赛设计进阶> 问题       给定一个长度为n的数列A,有m个询问,每次给定一个整数T,求出最大的k,满足a[1],a[2]……a[k]的和小于等于T(不会打sigm ...

  9. RMQ 模板题 poj 3264

    题目:点这里 题意:给一个长度n的数列,然后又Q个询问,问L   到R   中最大值与最小值的差. 分析:RMQ 的模板题. 代码: #include<stdio.h> #include& ...

随机推荐

  1. 随堂小测app(nabcd)

    N 现在,老师想要组织测验,需要提前印制试卷,费时费力,考勤采取传统的点名的方式,过程繁琐且结果水分大. 而随堂小测app通过在线答题,智能定位可以帮助老师掌握学生对知识的掌握程度,了解学生的到客情况 ...

  2. __all__方法的作用

    在__all__里面写了谁,到时候就只能用谁,其他的用不了,from 模块 import *时就只能用__all__里的 __all__=['test1','Test'] def test1(): p ...

  3. Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) B. Code For 1

    地址:http://codeforces.com/contest/768/problem/B 题目: B. Code For 1 time limit per test 2 seconds memor ...

  4. 【转】使用DataConnectionDialog在运行时设置数据源连接字符串

    介绍: DataConnectionDialog 类: 打开“数据连接”对话框,获取用户选择的数据连接信息. 命名空间为:Microsoft.Data.ConnectionUI 所在程序集:Micro ...

  5. SpringSource Tool Suite (STS)无法启动问题

    修改STS.ini,指定一个JRE路径: -vmD:\Program\Java\jdk1.7.0_79\bin\javaw.exe-startupplugins/org.eclipse.equinox ...

  6. 前端虚拟接口mockjs的使用

    最近在学习VueJS,也进一步学习了ES6,看了一遍之后,难免手痒,所以想仿写点什么,但是数据是个问题,你总不能写个分页,写个轮播吧,但是在公司做自己的东西找后台要接口也不那么像回事,怎么办呢? 无意 ...

  7. 编译项目报错 lc.exe已退出,代码为-1

    错误截图: 原因: Devexpress注册文件不一致造成,如果更改了不同Dev插件版本,会有这个问题 解决办法 删除项目中的licenses.licx文件 在解决方案资源管理器试图中,检索licx, ...

  8. java使用freemarker 生成word文档

      java 生成word文档     最近需要做一个导出word的功能, 在网上搜了下, 有用POI,JXL,iText等jar生成一个word文件然后将数据写到该文件中,API非常繁琐而且拼出来的 ...

  9. DbEntry 4.2 建立关系时的一些问题

    创建关系提示输入字符串的格式不正确 使用HasMany Attribute时,需要将属性访问器的set部分修改为private,否则会提示输入字符串的格式不正确 [HasMany(OrderBy = ...

  10. Web安全学习笔记之Kali部署DVWA和OWASPBWA

    0x0 前言 kali安装完成,下面要进行实战操作了,喵~~(OWASPBWA请直接跳到第八部分) #既然你诚心诚意的问了,我们就大发慈悲的告诉你! #为了防止世界被破坏! #为了守护世界的和平! # ...