만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

건초 더미 세기

시간 제한1초메모리 제한1024 MB

요약
인접한 두 스택의 높이 차가 1일 때 높은 쪽의 건초 하나를 낮은 쪽으로 옮길 수 있습니다. 가능한 최종 배치의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 정렬, 구현
정답자
아직 제출이 없습니다

문제

Bessie 소가 Farmer John의 헛간에서 또 말썽을 일으키고 있다. FJ에게는 NN개(1≤N≤50001 \le N \le 5000)의 건초 더미가 있다. 각 i∈[1,N]i \in [1, N]에 대해 ii번째 더미에는 hih_i개(1≤hi≤1091 \le h_i \le 10^9)의 건초 베일이 쌓여 있다. Bessie는 건초가 떨어지는 것을 원하지 않으므로, 그녀가 할 수 있는 연산은 다음 하나뿐이다.

  • 인접한 두 더미의 높이 차이가 정확히 1이면, 높은 더미의 맨 위 건초 베일 하나를 낮은 더미로 옮길 수 있다.

이 연산을 유한번 수행하여 얻을 수 있는 배치의 개수를 구하라. 답은 109+710^9+7로 나눈 나머지로 출력한다. 모든 ii에 대해 ii번째 더미의 건초 개수가 같으면 두 배치는 같은 배치로 본다.

입력

첫 줄에 독립적인 테스트 케이스의 개수 TT(1≤T≤101 \le T \le 10)가 주어진다. 모든 테스트 케이스를 맞혀야 입력 하나를 맞힌 것으로 본다.

각 테스트 케이스는 NN과 이어서 NN개의 높이로 이루어진다. 모든 테스트 케이스의 NN 합은 50005000을 넘지 않는다.

출력

TT줄을 출력한다. 각 줄은 테스트 케이스 하나의 답이다.

힌트

첫 번째 테스트 케이스에서 가능한 배치는 네 가지이다.

(2,2,2,3),(2,2,3,2),(2,3,2,2),(3,2,2,2).(2,2,2,3), (2,2,3,2), (2,3,2,2), (3,2,2,2).

두 번째 테스트 케이스에서 가능한 배치도 네 가지이다.

(2,3,3,1),(3,2,3,1),(3,3,2,1),(3,3,1,2).(2,3,3,1), (3,2,3,1), (3,3,2,1), (3,3,1,2).

예제1

  1. 예제 1

    입력
    7
    4
    2 2 2 3
    4
    3 3 1 2
    4
    5 3 4 2
    6
    3 3 1 1 2 2
    6
    1 3 3 4 1 2
    6
    4 1 2 3 5 4
    10
    1 5 6 6 6 4 2 3 2 5
    
    예상 출력
    4
    4
    5
    15
    9
    8
    19