2019HDU多校训练第五场1007-permutation 2
Posted charliewade
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019HDU多校训练第五场1007-permutation 2相关的知识,希望对你有一定的参考价值。
permutation 2
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Problem Description
You are given three positive integers N,x,y.
Please calculate how many permutations of 1∼N satisfies the following conditions (We denote the i-th number of a permutation by pi):
1. p1=x
2. pN=y
3. for all 1≤i<N, |pi−pi+1|≤2
Please calculate how many permutations of 1∼N satisfies the following conditions (We denote the i-th number of a permutation by pi):
1. p1=x
2. pN=y
3. for all 1≤i<N, |pi−pi+1|≤2
Input
The first line contains one integer T denoting the number of tests.
For each test, there is one line containing three integers N,x,y.
* 1≤T≤5000
* 2≤N≤105
* 1≤x<y≤N
For each test, there is one line containing three integers N,x,y.
* 1≤T≤5000
* 2≤N≤105
* 1≤x<y≤N
Output
For each test, output one integer in a single line indicating the answer modulo 998244353.
Sample Input
3
4 1 4
4 2 4
100000 514 51144
Sample Output
2
1
253604680
1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 #define maxn 100005 5 #define mod 998244353 6 ll fac[maxn]; 7 int main() 8 9 fac[0]=0; 10 fac[1]=1; 11 fac[2]=1; 12 for(int i=3; i<=maxn-2; i++) 13 14 fac[i]=(fac[i-1]+fac[i-3])%mod; 15 16 int t; 17 scanf("%d",&t); 18 while(t--) 19 20 int n,a,b; 21 scanf("%d%d%d",&n,&a,&b); 22 int ans=b-a; 23 if(a==1&&b==n)ans++; 24 else if(a!=1&&b!=n)ans--; 25 printf("%lld\n",fac[ans]); 26 27 return 0; 28 29 /* 30 3 31 4 1 4 32 4 2 4 33 100000 514 51144 34 */
以上是关于2019HDU多校训练第五场1007-permutation 2的主要内容,如果未能解决你的问题,请参考以下文章
hdu 4911 Inversion(归并排序求逆序对数)2014多校训练第5场
暑假N天乐比赛篇 —— 2019杭电暑期多校训练营(第五场)
[2019杭电多校第五场][hdu6624]fraction