CF1763D Valid Bitonic Permutations
题目大意
拱形排列,指由 1 , 2 , … , n 1,2,\dots,n 1,2,…,n组成的一个排列,从数值来看,必须是先上升后下降的。
给你五个数 n , i , j , x , y n,i,j,x,y n,i,j,x,y,求有多少个排列,满足第 i i i个数为 x x x,第 j j j个数为 y y y。输出答案模 1 0 7 9 10^9_7 1079。
有多组数据。
1 ≤ n ≤ 100 1\leq n\leq 100 1≤n≤100, 1 ≤ t ≤ 100 1\leq t\leq 100 1≤t≤100
题解
首先,我们要使 i < j , x < y i<j,x<y i<j,x<y。方法如下:
- 如果 i > j i>j i>j,则交换 i , j i,j i,j,交换 x , y x,y x,y
- 上面的操作进行后,如果 x > y x>y x>y,则 i = n − i + 1 i=n-i+1 i=n−i+1, j = n − j + 1 j=n-j+1 j=n−j+1,再交换 i , j i,j i,j,交换 x , y x,y x,y,相当于将序列前后翻转,这样求出的答案与原来的是等价的
令 k k k表示数字 n n n在序列中的位置,那么接下来,我们可以枚举 k k k。
第一种情况: k k k在 i i i和 j j j中间
如果 k k k在 i i i和 j j j之间,则序列大致如下
首先看第一段, y + 1 y+1 y+1到 n − 1 n-1 n−1之间的数可以放在这一段中,要放 j − k − 1 j-k-1 j−k