玲珑学院 1128 咸鱼拷问

1128 - 咸鱼拷问

Time Limit:3s Memory Limit:128MByte

Submissions:367Solved:112

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

15RMQ查询区间最值,线段树也可以

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.141592653589793238462
#define INF 0x3f3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
ll maxx[100006][25],minx[100006][25];
ll a[100006],b[100006];
ll n,m,x,y;
void get_rmq()
{
    for(int i=1;i<=n;i++)
    {
        maxx[i][0]=a[i];
        minx[i][0]=a[i];
    }
    for(int j=1;(1<<j)<=n;j++)
    {
        for(int i=1;i+(1<<j)-1<=n;i++)
        {
            maxx[i][j]=max(maxx[i][j-1],maxx[i+(1<<(j-1))][j-1]);
            minx[i][j]=min(minx[i][j-1],minx[i+(1<<(j-1))][j-1]);
        }
    }
}
ll get_k(ll l,ll r)
{
    if(l>r) return 0;
    ll k=0;
    while(1<<(1+k)<=r-l+1) k++;
    return k;
}
ll rmqmax(ll l,ll r,ll k)
{
    return max(maxx[l][k],maxx[r-(1<<k)+1][k]);
}
ll rmqmin(ll l,ll r,ll k)
{
    return min(minx[l][k],minx[r-(1<<k)+1][k]);
}
int main()
{
    scanf("%lld",&n);
    for(int i=1;i<=n;i++)
        scanf("%lld",&a[i]);
    get_rmq();
    for(int i=1;i<=n;i++)
        scanf("%lld",&b[i]);
    for(int i=1;i<=n;i++)
    {
        ll k=get_k(i-b[i]+1,i);
        printf("%lld\n",rmqmin(i-b[i]+1,i,k)*rmqmax(i-b[i]+1,i,k));
    }
}

时间: 2024-09-30 18:29:44

玲珑学院 1128 咸鱼拷问的相关文章

玲珑学院 1127 咸鱼文章

1127 - 咸鱼文章 Time Limit:1s Memory Limit:128MByte Submissions:474Solved:196 DESCRIPTION elttiL moT nwod eht teerts sllac ruo god " ehT peek god " . piZ si a peehs god . tuB nehw moT seirt ot yas " peeS " , ti semoc tuo " peek "

玲珑学院 1138 - 震惊,99%+的中国人都会算错的问题

1138 - 震惊,99%+的中国人都会算错的问题 Time Limit:4s Memory Limit:128MByte Submissions:310Solved:87 DESCRIPTION 众所周知zhu是一个大厨,zhu一直有自己独特的咸鱼制作技巧.tang是一个咸鱼供应商,他告诉zhu在他那里面有N 条咸鱼(标号从1到N)可以被用来制作.每条咸鱼都有一个咸鱼值Ki,初始时Ki都是0:zhu是一个特别的人,他又M个咸数(咸鱼数字),对于每个咸数x,他都会满足所有标号是x倍数的咸鱼的咸鱼

玲珑学院 1149 - Buildings

题意:给出N,k,长度为N的数列,问有多少个区间满足区间最大值-区间最小值<=k 思路:RMQ+二分 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N=2e5+10; 5 int a[N],b[N]; 6 int dp1[N][20],dp2[N][20]; 7 int n,k; 8 9 void init(){ 10 memset(dp2,127,sizeof(d

玲珑学院 1052 - See car

1052 - See car Time Limit:2s Memory Limit:64MByte Submissions:594Solved:227 DESCRIPTION You are the god of cars, standing at (a, b) point.There are some cars at point (xi,yi), . If lots of cars and you are in one line, you can only see the car that i

玲珑学院 1050 - array

1050 - array Time Limit:3s Memory Limit:64MByte Submissions:494Solved:155 DESCRIPTION 2 array is an array, which looks like: 1,2,4,8,16,32,64......a1=1 ,a[i+1]/a[i]=2; Give you a number array, and your mission is to get the number of subsequences ,wh

玲珑学院OJ 1028 - Bob and Alice are playing numbers 字典树,dp

http://www.ifrog.cc/acm/problem/1028 题解处:http://www.ifrog.cc/acm/solution/4 #include <cstdio> #include <cstring> #include <queue> #include <cmath> #include <algorithm> using namespace std; typedef long long LL; const int N =

玲珑学院 1010 - Alarm

1010 - Alarm Time Limit:1s Memory Limit:128MByte DESCRIPTION Given a number sequence [3,7,22,45,116,...] . Please tell me the k -th number. INPUT A number T (T<100) indicates the number of the input cases. Then for each case there only is one integer

玲珑学院OJ 1023 - Magic boy Bi Luo with his excited math problem 树状数组暴力

分析:a^b+2(a&b)=a+b  so->a^(-b)+2(a&(-b))=a-b 然后树状数组分类讨论即可 链接:http://www.ifrog.cc/acm/problem/1023 吐槽:这个题本来是mod(2^40),明显要用快速乘啊,但是用了以后狂T,不用反而过了,不懂出题人 #include <iostream> #include <algorithm> #include <cmath> #include <vector&g

【51CTO学院三周年】我在学院的收获

严格说起来,在很久以前我就和学院有交集了(那时候学院还没有诞生,哈哈...),久远到我都忘记注册时间了,在论坛上查询到的时间是注册时间2010-9-18. 开始交集也许是因为下载资料,原谅我一直是一个伸手党,以后我努力改...囧(/ □ \)-- 第一次下载应该是这个 绿色的超级终端仿真HyperTerminal 软件!在Windows7下... 后来自己把这个软件修改了一下,把在生成在开始菜单里面的文件夹去掉了...但是没有在学院这边上传(大部分伸手党都是这样的吧) 要说开始活跃是因为去年学习