思路
本题关于i有两种属性
- 位置:[b1~bi],即b在i的位置之前
- 大小:比i小
代码
#include<bits/stdc++.h> using namespace std; #define ll long long const int M =1e4+10; const int Mod = 340610; int a[M],b[M],n; int dp[M]; ll ans=1; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) { if(a[i]-a[i-1]==0) continue; if(a[i]-a[i-1]==1) ans*=(2*i-2*a[i-1]-1); if(a[i]-a[i-1]==2) ans*=pow((i-1-a[i-1]),2); if(a[i]-a[i-1]>=3) ans=0; ans%=Mod; } printf("%lld",ans); return 0; }