CF1117G.Recursive Queries

省选/NOI-

通过率:0%

时间限制:4.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a permutation p1,p2,…,pnp_1, p_2, \dots, p_n. You should answer qq queries. Each query is a pair (li,ri)(l_i, r_i), and you should calculate f(li,ri)f(l_i, r_i).

Let's denote ml,rm_{l, r} as the position of the maximum in subsegment pl,pl+1,…,prp_l, p_{l+1}, \dots, p_r.

Then f(l,r)=(r−l+1)+f(l,ml,r−1)+f(ml,r+1,r)f(l, r) = (r - l + 1) + f(l, m_{l,r} - 1) + f(m_{l,r} + 1, r) if l≤rl \le r or 00 otherwise.

给你一个排列 p1,p2,…,pnp_1, p_2, \dots, p_n。你需要回答 qq 个查询。每个查询是一个数对 (li,ri)(l_i, r_i),你需要计算 f(li,ri)f(l_i, r_i)。

记 ml,rm_{l, r} 为子段 pl,pl+1,…,prp_l, p_{l+1}, \dots, p_r 中最大值的位置。

那么,当 l≤rl \le r 时,f(l,r)=(r−l+1)+f(l,ml,r−1)+f(ml,r+1,r)f(l, r) = (r - l + 1) + f(l, m_{l,r} - 1) + f(m_{l,r} + 1, r);否则 f(l,r)=0f(l, r) = 0。

输入格式

The first line contains two integers nn and qq (1≤n≤1061 \le n \le 10^6, 1≤q≤1061 \le q \le 10^6) — the size of the permutation pp and the number of queries.

The second line contains nn pairwise distinct integers p1,p2,…,pnp_1, p_2, \dots, p_n (1≤pi≤n1 \le p_i \le n, pi≠pjp_i \neq p_j for i≠ji \neq j) — permutation pp.

The third line contains qq integers l1,l2,…,lql_1, l_2, \dots, l_q — the first parts of the queries.

The fourth line contains qq integers r1,r2,…,rqr_1, r_2, \dots, r_q — the second parts of the queries.

It's guaranteed that 1≤li≤ri≤n1 \le l_i \le r_i \le n for all queries.

第一行包含两个整数 nn 和 qq(1≤n≤1061 \le n \le 10^6,1≤q≤1061 \le q \le 10^6)——分别为排列 pp 的长度和查询次数。

第二行包含 nn 个两两不同的整数 p1,p2,…,pnp_1, p_2, \dots, p_n(1≤pi≤n1 \le p_i \le n,当 i≠ji \neq j 时 pi≠pjp_i \neq p_j)——即排列 pp。

第三行包含 qq 个整数 l1,l2,…,lql_1, l_2, \dots, l_q —— 各查询的左端点。

第四行包含 qq 个整数 r1,r2,…,rqr_1, r_2, \dots, r_q —— 各查询的右端点。

保证对所有查询均有 1≤li≤ri≤n1 \le l_i \le r_i \le n。

输出格式

Print qq integers — the values f(li,ri)f(l_i, r_i) for the corresponding queries.

输出 qq 个整数——即各查询对应的 f(li,ri)f(l_i, r_i) 的值。

输入输出样例

  • 输入#1

    4 5
    3 1 4 2
    2 1 1 2 1
    2 3 4 4 1

    输出#1

    1 6 8 5 1

说明/提示

Description of the queries:

  1. f(2,2)=(2−2+1)+f(2,1)+f(3,2)=1+0+0=1f(2, 2) = (2 - 2 + 1) + f(2, 1) + f(3, 2) = 1 + 0 + 0 = 1;
  2. f(1,3)=(3−1+1)+f(1,2)+f(4,3)=3+(2−1+1)+f(1,0)+f(2,2)=3+2+(2−2+1)=6f(1, 3) = (3 - 1 + 1) + f(1, 2) + f(4, 3) = 3 + (2 - 1 + 1) + f(1, 0) + f(2, 2) = 3 + 2 + (2 - 2 + 1) = 6;
  3. f(1,4)=(4−1+1)+f(1,2)+f(4,4)=4+3+1=8f(1, 4) = (4 - 1 + 1) + f(1, 2) + f(4, 4) = 4 + 3 + 1 = 8;
  4. f(2,4)=(4−2+1)+f(2,2)+f(4,4)=3+1+1=5f(2, 4) = (4 - 2 + 1) + f(2, 2) + f(4, 4) = 3 + 1 + 1 = 5;
  5. f(1,1)=(1−1+1)+0+0=1f(1, 1) = (1 - 1 + 1) + 0 + 0 = 1.

查询的描述:

  1. f(2,2)=(2−2+1)+f(2,1)+f(3,2)=1+0+0=1f(2, 2) = (2 - 2 + 1) + f(2, 1) + f(3, 2) = 1 + 0 + 0 = 1;
  2. f(1,3)=(3−1+1)+f(1,2)+f(4,3)=3+(2−1+1)+f(1,0)+f(2,2)=3+2+(2−2+1)=6f(1, 3) = (3 - 1 + 1) + f(1, 2) + f(4, 3) = 3 + (2 - 1 + 1) + f(1, 0) + f(2, 2) = 3 + 2 + (2 - 2 + 1) = 6;
  3. f(1,4)=(4−1+1)+f(1,2)+f(4,4)=4+3+1=8f(1, 4) = (4 - 1 + 1) + f(1, 2) + f(4, 4) = 4 + 3 + 1 = 8;
  4. f(2,4)=(4−2+1)+f(2,2)+f(4,4)=3+1+1=5f(2, 4) = (4 - 2 + 1) + f(2, 2) + f(4, 4) = 3 + 1 + 1 = 5;
  5. f(1,1)=(1−1+1)+0+0=1f(1, 1) = (1 - 1 + 1) + 0 + 0 = 1。

输入解题思路,AI测评打分。不知道怎么写?

首页