对1~n组成的序列进行冒泡排序,一共进行了k趟,问有几个符合题意的序列。

注意:这里指每一趟是指交换当前相邻的全部逆序对,比如:2 1 4 3进行一趟交换就是1 2 3 4

假设我们细心观察。就会发现。须要进行的趟数等于序列中对于某个最多逆序对数的数。

比如:在序列 3 2 1 4中。3的逆序对为0,2的逆序对为1,1的逆序对为2,4的逆序对为0,一共排序2次。

直接计算最大逆序对对数为k对的排列数不方便,这里有一个很巧妙的方法,g[k]表示最大逆序对对数小于等于k对的排列总数,那么终于的答案就是g[k] - g[k-1]。

对于前k个最大的数,他们的最大逆序对对数不会超过k个,因此对于前k大的数有k!种排列,则对于第k大之后的数,每一个数的位置有k+1种,那么总共就有 k! * (k+1)^(n-k)种情况。

#include<cstdio>
#define tsy 20100713
using namespace std;
typedef long long LL;
LL jc[1000005];
void init()
{
jc[0] = 1;
jc[1] = 1;
for(int i = 2; i <= 1000000; i++)
{
jc[i] = jc[i-1]*(i%tsy)%tsy;
}
}
LL n;
LL ksm(LL x,LL k)
{
LL res = 1;
while(k)
{
if(k&1) res = (res*x)%tsy;
k >>= 1;
x = (x*x)%tsy;
}
return res;
}
LL getans(LL k)
{
return (jc[k]*ksm(k+1,n-k))%tsy;
}
int main()
{
init();
int T;
LL k;
scanf("%d",&T);
while(T--)
{
scanf("%I64d%I64d",&n,&k);
printf("%I64d\n",(getans(k) - getans(k-1) + tsy)%tsy);
}
}

POJ3761 Bubble Sort的更多相关文章

  1. POJ3761 Bubble Sort (组合数学,构造)

    题面 Bubble sort is a simple sorting algorithm. It works by repeatedly stepping through the list to be ...

  2. Java中的经典算法之冒泡排序(Bubble Sort)

    Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...

  3. Bubble Sort (5775)

    Bubble Sort Problem Description   P is a permutation of the integers from 1 to N(index starting from ...

  4. Bubble Sort [ASM-MIPS]

    # Program: Bubble sort # Language: MIPS Assembly (32-bit) # Arguments: 5 unordered numbers stored in ...

  5. HDU 5775 Bubble Sort(冒泡排序)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  6. 2016 Multi-University Training Contest 4 Bubble Sort(树状数组模板)

    Bubble Sort 题意: 给你一个1~n的排列,问冒泡排序过程中,数字i(1<=i<=n)所到达的最左位置与最右位置的差值的绝对值是多少 题解: 数字i多能到达的最左位置为min(s ...

  7. 快速幂取模 POJ 3761 bubble sort

    题目传送门 /* 题意:求冒泡排序扫描k次能排好序的全排列个数 数学:这里有一个反序列表的概念,bj表示在j左边,但大于j的个数.不多说了,我也是看网上的解题报告. 详细解释:http://blog. ...

  8. 冒泡排序(Bubble Sort)

    常见的排序算法有Bubble Sort.Merge Sort.Quick Sort 等,所有排序算的基本法思想都是把一个无限大的数据规模通过算法一步步缩小,指导最后完成排序. 这里分享一下Buuble ...

  9. [算法] 冒泡排序 Bubble Sort

    冒泡排序(Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没 ...

随机推荐

  1. MySQL连接使用及分类

    SQL连接 SQL 连接(JOIN)子句用于将数据库中两个或者两个以上表中的记录组合起来.连接通过共有值将不同表中的字段组合在一起. 考虑下面两个表,(a)CUSTOMERS 表:+----+---- ...

  2. python-基本运算符(解压缩-必考)

    基本运算符 算术运算符 x =10 y =20 print(x+y) 30 print(x-y) -10 print(x*y) 200 print(x/y) 0.5 print(x%y)#取余 10 ...

  3. python_函数递归

    函数递归 函数递归:函数的递归调用,即在函数调用的过程中,又直接或间接地调用了函数本身 # import sys # print(sys.getrecursionlimit()) # sys.setr ...

  4. 如何查看Laravel版本号的三种方法

    1.PHP artisan --version 2.vim vendor/laravel/framework/src/Illuminate/Foundation/Application.php 3:可 ...

  5. 集合框架学习之List接口

    Java语言的java.util包中提供了一些集合类,这些集合类又被称为容器.用来完善数组的不足之处.集合类与数组的不同之处是,数组的长度是固定的,集合的长度是可变的:数组用来存放基本类型的数据,集合 ...

  6. 儿子写日记 : " 夜深了,妈妈在打麻将,爸爸在上网……"

    儿子写日记 : " 夜深了,妈妈在打麻将,爸爸在上网……"              爸爸检查时,很不满意地说 : " 日记源于生活,但要高于生活 !"    ...

  7. Nginx与python web服务配置(Uwsgi& FastCGI)

    Uwsgi start uswgi uwsgi --harakiri 360000 --body-read-warning=10000 --max-fd=65536 -b 1000000 --http ...

  8. 29个非常流行的jQuery提示信息插件

    在网站的设计中,提示信息是非常细微的功能,但是起着非常重要的作用.如果你的网站中提示信息做的比较好,会给浏览者留下非常深刻的印象,同时也会起到非常好的网站宣传效果,下面介绍了30个比较流行提示信息插件 ...

  9. js如何获取点击<li>标签里的值

  10. NYOJ-481平衡字符串

    平衡字符串 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 给你一定长度的字符串.字符串中只包含26个小写字母,首先我们把字母a-z分为2堆(a--m)和(n--z),判 ...