luogu#P8062. [BalkanOI 2012] handsome

[BalkanOI 2012] handsome

题目背景

你是 OIer 中最帅的,所以你要做一道跟帅有关的题。

题目描述

一个 NN 位数是帅气的,当且仅当每一个数位上的数为 1,2,31,2,3 中的一个。而且相邻的两个数位上的数字构成的有序数对不是“危险数对”。

  • NN 位数 XX 在排列 pp 的意义下字典序小于 NN 位数 YY,当且仅当存在一个 kk 使得 $X_{p_1}=Y_{p_1},X_{p_2}=Y_{p_2},\dots,X_{p_{k}}<Y_{p_{k}}$。

  • NN 位数 XX 在排列 pp 的意义下字典序等于 NN 位数 YY,当且仅当$X_{p_1}=Y_{p_1},X_{p_2}=Y_{p_2},\dots,X_{p_{N}}=Y_{p_{N}}$。

  • NN 位数 XX 在排列 pp 的意义下字典序大于 NN 位数 YY,当且仅当存在一个 kk 使得 $X_{p_1}=Y_{p_1},X_{p_2}=Y_{p_2},\dots,X_{p_{k}}>Y_{p_{k}}$。

请你输出在排列 pp 意义下小于等于 BB 的帅气数的个数模 109+710^9+7 的值。

输入格式

输入的第一行包含一个整数 NN,表示数字位数。

第二行包含 NN 个空格分隔的整数,表示排列 pp。该行的第 ii 个整数表示 pip_i

第三行包含一个整数 MM,表示危险数对个数。

第四行 MM 个空格分隔的两位整数,第 ii 个两位整数 aibi\overline{a_ib_i} 表示 (ai,bi)(a_i,b_i) 为危险数对。

第五行一个正整数 BB 表示给定帅气数。

输出格式

输出一行,表示在排列 pp 意义下小于等于 BB 的帅气数个数模 109+710^9+7

3
2 1 3
2
22 13
321
9

提示

数据范围:

Subtask#0 为样例。

1N4×1051\le N\le4\times10^5M>0M>0ai,bi{1,2,3}a_i,b_i\in\{1,2,3\}

保证 BB 为帅气数。

样例解释:

113,122,131,132,133,213,221,222,223,313,322113,122,131,132,133,213,221,222,223,313,322 不是帅气数,因为出现了危险数对 (2,2)(2,2)(1,3)(1,3)

所以,所有 33 位帅气数为:$ 111,112,121,123, 211,212,231,232,233, 311,312,321,323,331,332,333$。

在排列 2,1,32,1,3 意义下小于等于 321321 的帅气数有:111,112,121,123,211,212,311,312,321111,112,121,123,211,212,311,312,321

323323 在排列 2,1,32,1,3 意义下与 321321 比较(设 323323XX321321YY):

  • 先比较第 22 位:X2=Y2=2X_2=Y_2=2
  • 再比较第 11 位:X1=Y1=3X_1=Y_1=3
  • 最后比较第 33 位:X3=3>Y3=1X_3=3>Y_3=1

所以 323323 在排列 2,1,32,1,3 意义下大于 321321,不是满足条件的帅气数。