#P1013. Problem 3. Smaller Averages

Problem 3. Smaller Averages

当前没有测试数据。

题目:较小平均值(Smaller Averages)

一、题目描述

贝西(Bessie)有两个长度为NN1N5001\leq N\leq500)的数组。第一个数组的第ii个元素是aia_i1ai1061\leq a_i\leq10^6),第二个数组的第ii个元素是bib_i1bi1061\leq b_i\leq10^6)。

贝西想要将两个数组都分割成非空的子数组,使得满足以下条件:

  1. 每个元素恰好属于一个子数组。
  2. 两个数组被分割成相同数量的子数组。设第一个和第二个数组被分割成的子数组数量为kk(即第一个数组被精确分割成kk个子数组,第二个数组也被精确分割成kk个子数组)。
  3. 对于所有1ik1\leq i\leq k,第一个数组左边第ii个子数组的平均值小于或等于第二个数组左边第ii个子数组的平均值。

计算她在满足约束条件下将两个数组分割成非空子数组的方法数,结果对109+710^9 + 7取模。如果子数组数量不同或者某些元素属于不同的子数组,则认为两种分割方式不同。

二、输入格式(从终端/标准输入读取)

  1. 第一行包含NN
  2. 下一行包含a1,a2,,aNa_1,a_2,\cdots,a_N
  3. 再下一行包含b1,b2,,bNb_1,b_2,\cdots,b_N

三、输出格式(输出到终端/标准输出)

输出在满足约束条件下将两个数组分割成非空子数组的方法数,对109+710^9 + 7取模后的结果。

四、样例输入及输出

样例输入1

2
1 2
2 2

样例输出1

2

解释:两种有效的分割方式为:

  • 将第一个数组分割成[1],[2][1],[2],第二个数组分割成[2],[2][2],[2]
  • 将第一个数组分割成[1,2][1,2],第二个数组分割成[2,2][2,2]

样例输入2

3
1 3 2
2 2 2

样例输出2

3

解释:三种有效的分割方式为:

  • 将第一个数组分割成[1,3],[2][1,3],[2],第二个数组分割成[2,2],[2][2,2],[2]
  • 将第一个数组分割成[1,3],[2][1,3],[2],第二个数组分割成[2],[2,2][2],[2,2]
  • 将第一个数组分割成[1,3,2][1,3,2],第二个数组分割成[2,2,2][2,2,2]

样例输入3

5
2 5 1 3 2
2 1 5 2 2

样例输出3

1

解释:唯一有效的分割方式是将第一个数组分割成[2],[5,1,3],[2][2],[5,1,3],[2],第二个数组分割成[2],[1,5],[2,2][2],[1,5],[2,2]

样例输入4

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

样例输出4

140

五、评分规则

  1. 输入5 - 6:N10N\leq10
  2. 输入7 - 9:N80N\leq80
  3. 输入10 - 17:N300N\leq300
  4. 输入18 - 20:N500N\leq500

题目来源:Alex Liang。