[YBTOJ-递推算法强化训练-4]序列个数

思路

本题关于i有两种属性

  1. 位置:[b1~bi],即b在i的位置之前
  2. 大小:比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;
}

 

posted @ 2021-02-23 16:45  conprour  阅读(90)  评论(0编辑  收藏  举报