P6323 [COCI 2006/2007 #4] ZBRKA
题目描述
在一个长度为 n n n 的排列中找出逆序对数量恰好为 c c c 的排列总数。( m o d 10 9 + 7 \bmod \ 10^9+7 mod 109+7)
输入格式
输入共一行为两个整数 n , c n,c n,c。
输出格式
输出逆序对数量恰好为 c c c 的排列总数。( m o d 10 9 + 7 \bmod \ 10^9+7 mod 109+7)
输入输出样例 #1
输入 #1
10 1
输出 #1
9
输入输出样例 #2
输入 #2
4 3
输出 #2
6
输入输出样例 #3
输入 #3
9 13
输出 #3
17957
说明/提示
数据规模与约定
对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 10 3 1\le n\le 10^3 1≤n≤103, 1 ≤ c ≤ 10 4 1\le c\le 10^4 1≤c≤104。
说明
题目译自 COCI2006-2007 CONTEST #4 T4 ZBRKA
C++实现
#include<stdio.h>
const int mod=1e9+7;
int dp[10005];
int n,m;
int main(){
scanf("%d%d",&n,&m);
dp[0]=1;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j)
if((dp[j]+=dp[j-1])>=mod)dp[j]-=mod;
for(int j=m;j>=i;--j)
if((dp[j]-=dp[j-i])<0)dp[j]+=mod;
}
printf("%d",dp[m]);
return 0;
}
后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容