1968: Permutation Descent Counts

Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 123     Solved: 96


Description

Given a positive integer, N, a permutation of order N is a one-to-one (and thus onto) function from the set of integers from 1 to N to itself. If p is such a function, we represent the function by a list of its values: [ p(1) p(2) … p(N) ]

For example,
[5 6 2 4 7 1 3] represents the function from { 1 … 7 } to itself which takes 1 to 5, 2 to 6, … , 7 to 3.
For any permutation p, a descent of p is an integer k for which p(k) > p(k+1). For example, the permutation [5 6 2 4 7 1 3] has a descent at 2 (6 > 2) and 5 (7 > 1).
For permutation p, des(p) is the number of descents in p. For example, des([5 6 2 4 7 1 3]) = 2. The identity permutation is the only permutation with des(p) = 0. The reversing permutation with p(k) = N+1-k is the only permutation with des(p) = N-1 .

The permutation descent count (PDC) for given order N and value v is the number of permutations p of order N with des(p) = v. For example:

PDC(3, 0) = 1 { [ 1 2 3 ] }
PDC(3, 1) = 4 { [ 1 3 2 ], [ 2 1 3 ], [ 2 3 1 ], 3 1 2 ] }
PDC(3, 2) = 1 { [ 3 2 1 ] }`

Write a program to compute the PDC for inputs N and v. To avoid having to deal with very large numbers, your answer (and your intermediate calculations) will be computed modulo 1001113.

Input

The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. Each data set should be processed identically and independently.

Each data set consists of a single line of input. It contains the data set number, K, followed by the integer order, N (2 ≤ N ≤ 100), followed by an integer value, v (0 ≤ v ≤ N-1).

Output

For each data set there is a single line of output. The single output line consists of the data set number, K, followed by a single space followed by the PDC of N and v modulo 1001113 as a decimal integer.

Sample Input

4
1 3 1
2 5 2
3 8 3
4 99 50

Sample Output

1 4
2 66
3 15619
4 325091

Hint

Source

2017湖南多校第十三场

//题意:给出 n,v 求 1 -- n 的排列中,相邻的数,出现 v 次前面数比后面数大的种数。

题解:假如设 dp[i][j] 为 1 -- i 的排列,出现 j 次前面数比后面数大的情况的种数,那么

递推,有两个来源,dp[i-1][j] 和 dp[i-1][j-1] ,只要考虑 i 放置的位置即可,分清楚情况讨论清楚即可!

比赛时没想清楚唉!

 # include <cstdio>
# include <cstring>
# include <cstdlib>
# include <iostream>
# include <vector>
# include <queue>
# include <stack>
# include <map>
# include <bitset>
# include <set>
# include <cmath>
# include <algorithm>
using namespace std;
#define lowbit(x) ((x)&(-x))
#define pi acos(-1.0)
#define eps 1e-8
#define MOD 1001113
#define INF 0x3f3f3f3f
#define LL long long
inline int scan() {
int x=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-') f=-; ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-''; ch=getchar();}
return x*f;
}
inline void Out(int a) {
if(a<) {putchar('-'); a=-a;}
if(a>=) Out(a/);
putchar(a%+'');
}
#define MX 105
//Code begin...
int dp[MX][MX]; void Init()
{
dp[][]=;
for (int i=;i<=;i++)
{
for (int j=;j<=i-;j++)
{
dp[i][j] = dp[i-][j]*(j+)%MOD;
if (j!=)
dp[i][j] = (dp[i][j]+dp[i-][j-]*(i-j))%MOD;
}
}
} int main()
{
Init();
int t = scan();
while (t--)
{
int c = scan();
int n = scan();
int m = scan();
printf("%d %d\n",c,dp[n][m]);
}
return ;
}

Permutation Descent Counts(递推)的更多相关文章

  1. permutation 2(递推 + 思维)

    permutation 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) ...

  2. CSU 1968 Permutation Descent Counts

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1968 题意:对于任一种N的排列A,定义它的E值为序列中满足A[i]>A[i+1]的数的个 ...

  3. 【HDOJ6630】permutation 2(递推)

    题意:给定x,y,n,有标号从1到n的n个数组,求合法的排列个数模998244353使得 1:p[1]=x 2:p[n]=y 3:相邻两项的差的绝对值<=2 n<=1e5 思路: #inc ...

  4. Codeforces Gym10081 A.Arcade Game-康托展开、全排列、组合数变成递推的思想

    最近做到好多概率,组合数,全排列的题目,本咸鱼不会啊,我概率论都挂科了... 这个题学到了一个康托展开,有点用,瞎写一下... 康托展开: 适用对象:没有重复元素的全排列. 把一个整数X展开成如下形式 ...

  5. 四角递推(CF Working out,动态规划递推)

    题目:假如有A,B两个人,在一个m*n的矩阵,然后A在(1,1),B在(m,1),A要走到(m,n),B要走到(1,n),两人走的过程中可以捡起格子上的数字,而且两人速度不一样,可以同时到一个点(哪怕 ...

  6. UVA 11077 Find the Permutations 递推置换

                               Find the Permutations Sorting is one of the most used operations in real ...

  7. Code Force 429B Working out【递推dp】

    Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the ...

  8. 【BZOJ-2476】战场的数目 矩阵乘法 + 递推

    2476: 战场的数目 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 58  Solved: 38[Submit][Status][Discuss] D ...

  9. 从一道NOI练习题说递推和递归

    一.递推: 所谓递推,简单理解就是推导数列的通项公式.先举一个简单的例子(另一个NOI练习题,但不是这次要解的问题): 楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可 ...

随机推荐

  1. 火狐浏览器获取event

    因为各种浏览器对js文件的解析不同.加上各种浏览器的内核不一样,以及内核版本号也不一样,所以获取event的方式也不一样. 使用原始的方式获取event是 这种: document.body.oncl ...

  2. java集合类简单思维导图

  3. 谈谈varnish,squid,apache,nginx缓存的对比

    总是有人在问cache用什么,有varnish,squid,apache,nginx这几种,到底是我们用什么架构cache. 1.从这些功能上.varnish和squid是专业的cache服务,而ap ...

  4. [原创]如何让freeswitch转发客户端自定义的INFO消息

    如何让freeswitch转发客户端自定义的INFO消息 英文概述: this article is about how to configure freeswitch to forward self ...

  5. Verilog HDL test bench 문법에 관한

    16bit ripple carry adder test bench `timescale 1ns/1ns module testbench2; reg [15:0] a, [15:0] b, c_ ...

  6. 第八章 springboot + mybatis + 多数据源3(使用切面AOP)

    引入 aop包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  7. mysql命令:set sql_log_bin=on/off

    对于数据库的操作,经常需要暂时停止对bin-log日志的写入,那就需要这个命令:set sql_log_bin=on/off 参考:dev.mysql.com/doc/refman/5.5/en/se ...

  8. C#虚方法、抽象类、方法重写

    Timer.每隔一段时间触发一个事件.不可视控件.Interval.Enabled.Tick事件.计量单位:ms(毫秒). 1秒=1000毫秒.取当前时间      DateTime.Now.ToSt ...

  9. C++获取二维数组的元素个数

    C/C++获取二维数组的大小/长度/元素个数 ][]; ]) /

  10. linux 一行一行的读取文件

    #!/bin/bash #reading data from a file count= cat test1 | while read line do echo "Line $count: ...