아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

RMQ 유사 수열

시간 제한2초메모리 제한256 MB

요약
수열 A가 주어질 때, 모든 부분 구간에서 A와 같은 RMQ 결과를 내는 [0,1] 구간의 무작위 실수 수열 B의 기댓값 합을 1e9+7로 나눈 나머지를 구한다.
난이도

어려움10점 중 9점

유형
트리, 조합론, 확률, 수학
정답자
아직 제출이 없습니다

문제

Chiaki는 수열 A={a1,a2,…,an}A=\{a_1,a_2,\dots,a_n\}을 가지고 있다. RMQ(A,l,r)\mathbf{RMQ}(A, l, r)을 al,al+1,…,ara_l, a_{l+1}, \dots, a_{r} 중 최댓값이 aia_i인 최소 ii (l≤i≤rl \le i \le r)로 정의하자.

두 수열 AA와 BB가 RMQ 유사라는 것은, 두 수열의 길이가 nn으로 같고 모든 1≤l≤r≤n1 \le l \le r \le n에 대해 RMQ(A,l,r)=RMQ(B,l,r)\mathbf{RMQ}(A, l, r) = \mathbf{RMQ}(B, l, r)이라는 뜻이다.

주어진 수열 A={a1,a2,…,an}A=\{a_1,a_2,\dots,a_n\}에 대해 수열 B={b1,b2,…,bn}B=\{b_1,b_2,\dots,b_n\}의 가중치를 다음과 같이 정의하자. 수열 BB와 수열 AA가 RMQ 유사하면 ∑i=1nbi\sum\limits_{i=1}^{n} b_i (즉, BB의 모든 원소의 합)이고, 그렇지 않으면 00이다. BB의 각 원소가 00과 11 사이에서 독립적으로 균등하게 무작위로 선택된 실수일 때, BB의 기댓값을 구하여라.

입력

여러 테스트 케이스가 주어진다. 입력의 첫 줄에는 테스트 케이스의 수를 나타내는 정수 TT가 주어진다. 각 테스트 케이스는 다음과 같다.

첫 줄에는 정수 nn (1≤n≤1061 \le n \le 10^6)이 주어진다. 이는 수열의 길이이다.

둘째 줄에는 수열을 나타내는 nn개의 정수 a1,a2,…,ana_1, a_2, \dots, a_n (1≤ai≤n1 \le a_i \le n)이 주어진다.

모든 nn의 합은 3×1063 \times 10^6을 넘지 않음이 보장된다.

출력

각 테스트 케이스에 대해 답을 109+710^9 + 7로 나눈 나머지를 유리수 값으로 출력한다.

형식적으로, 주어진 제약 조건에서 확률은 항상 유리수 pq\frac{p}{q} (pp와 qq는 정수이고 서로소이며 qq는 양수)이고, qq는 109+710^9 + 7로 나누어떨어지지 않음이 보장된다. p−aqp - aq가 109+710^9 + 7로 나누어떨어지는 00과 109+610^9 + 6 사이의 정수 aa를 출력한다.

예제1

  1. 예제 1

    입력
    3
    3
    1 2 3
    3
    1 2 1
    5
    1 2 3 2 1
    
    예상 출력
    250000002
    500000004
    125000001