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 ;
}
 

最新文章

  1. java中获取路径的几种基本的方法
  2. MVC学习二:基础语法
  3. Emphasis on Filtering &amp; Depth Map Occlusion Filling
  4. 【代码笔记】iOS-离线地图
  5. 【背景建模】VIBE
  6. js私有共有成员
  7. Yslow&amp;PageSpeed– 诊断各种缓慢症状
  8. [linux basic 基础]----线程的属性
  9. [drp 5] pageModel的建立,实现分页查询
  10. css 设置字体
  11. Codeforces 526E Transmitting Levels
  12. mac 画图
  13. Activiti第一篇【介绍、配置开发环境、快速入门】
  14. Codewars练习
  15. 关于 python中的 TKinterlistbox 控件加横竖滚动条
  16. 了解一下SQL映射文件
  17. puppeteer 安装失败的解决方案
  18. 给PHP开启shmop扩展实现共享内存
  19. Rest架构风格
  20. java NIO (二) 一个故事讲清楚NIO

热门文章

  1. 压力测试sysbench
  2. Numpy包简单介绍
  3. JDB调试代码 20165324 何春江
  4. SCADA必备函数 实际测试。
  5. Java游戏服务器成长之路——弱联网游戏篇(源码分析)
  6. VS和IE或者360兼容模式简单调试js方法
  7. Postman 把response的值自动放到变量里
  8. python os模块一些常用操作
  9. python-静态方法staticmethod、类方法classmethod、属性方法property
  10. oracle安装完成后目录中不论有没有tnsnames.ora和listener.ora文件 PLSQL都能连上的问题解决方法