题意:长度为n的序列,前m位恰好k位正确排序,求方法数

前m位选k个数正确排,为cm[m][k],剩余m - k个空位,要错排,这m - k个数可能是前m个数中剩下的,也可能来自后面的n - m个数

考虑这样一个问题,共n个数,前i位错排的方法数,显然dp[i][0] = i!

递推考虑:处理到第i个数时,等价于前i - 1个数错排的方法数减去在前i - 1个数错排的情况下第i位恰好为i的方法数,后者相当于n - 1个数前i - 1位错排

所以 dp[n][i] = dp[n][i - 1] - dp[n - 1][i - 1]

故结果为:

cm[m][k] * dp[n - k][m - k]

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
#include<utility>
using namespace std;
typedef long long LL;
const int N = 1008, INF = 0x3F3F3F3F;
const LL MOD = 1000000007;LL cm[N][N], dp[N][N];void init(){memset(cm, 0, sizeof(cm));cm[0][0] = 1;for(int i = 1; i < N; i++){cm[i][0] = 1;for(int j = 1; j <= i; j++){cm[i][j] = (cm[i - 1][j - 1] + cm[i - 1][j]) % MOD;}}dp[0][0] = 1;for(int i = 1; i < N; i++){dp[i][0] = (dp[i - 1][0] * i) % MOD;}for(int i = 1; i < N; i++){for(int j = 1; j <= i; j++){dp[i][j] = ((dp[i][j - 1] - dp[i - 1][j - 1] ) % MOD + MOD) % MOD;}}}int main(){init();int t;cin >> t;for(int i = 1; i <= t; i++){int n, m, k;scanf("%d %d %d", &n, &m, &k);printf("Case %d: %lld\n", i, cm[m][k] * dp[n - k][m - k] % MOD);}return 0;
}

  

转载于:https://www.cnblogs.com/IMGavin/p/6021267.html

UVA 11481 Arrange the Numbers(组合数学 错位排序)相关推荐

  1. lightoj1095 Arrange the Numbers 组合数学

    题目: Consider this sequence {1, 2, 3 ... N}, as an initial sequence of first N natural numbers. You c ...

  2. 组合数学 - 全错位排序公式

    不容易系列之一 Problem Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好"一件"事情尚且不易,若想永远成功而总从不失败,那更 ...

  3. hdu 1465 不容易系列之一(错位排序)

    不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  4. 神、上帝以及老天爷(错位排序)

    Description 协会活动为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动,这个活动的具体要求是这样的: 首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中: 然后,待所有 ...

  5. One Day One Step 之全错位排序

     One Day One Step 之全错位排序 今天做了一道题,是关于全错位排序的.在高中的时候,对排列组合一直很头痛,所以今天趁这个机会,好好学习学习! 先来看一下题目吧! 神.上帝以及老天爷 ...

  6. buct1711 错位排序

    题目:buct1711 方法:dfs 思想:用dfs找出所有可能的排列,并判读该排列是否是错位排序序列, 若是就直接输出便可. 代码: (1) #include <iostream> us ...

  7. UVa 11481 (计数) Arrange the Numbers

    居然没有往错排公式那去想,真是太弱了. 先在前m个数中挑出k个位置不变的数,有C(m, k)种方案,然后枚举后面n-m个位置不变的数的个数i,剩下的n-k-i个数就是错排了. 所以这里要递推一个组合数 ...

  8. UVA - 136:Ugly Numbers

    Ugly Numbers 来源:UVA 标签: 参考资料:<算法竞赛入门经典>P120 相似题目: 题目 Ugly numbers are numbers whose only prime ...

  9. UVA 10910 Marks Distribution(组合数学 或 递推)

    题意:一个人N门课程的总成绩为T,每门课程的最低成绩为P,求一共有多少种可能的分配方法. 题解:可以先求出超出的部分 T = T - n*p:剩余的相当于n个里面每个科目放0,1分等. 这题我只懂了递 ...

最新文章

  1. CCAI 2020 | 唐剑:智慧交通,未来出行
  2. python网页编程测试_李亚涛:python编写友情链接检测工具
  3. 2014年4月5日 java集合框架总结2--List接口及其子类
  4. php中把美国时间转为北京时间的自定义
  5. 撩课-Web大前端每天5道面试题-Day35
  6. 《Web Hacking 101》中的链接整理
  7. 把tomcat的8080改为80端口
  8. Leetcode每日一题:659.split-array-into-consecutive-subsequences(分割数组为连续子序列)
  9. bigsur正式版clover引导_迟来的OC引导版本升级教程,让大家在更新mac OS Big Sur的时候变得更轻松...
  10. Microsoft Visual Studio .NET 2003 编译xvidcore-1.1.3
  11. PHP - Smarty模板引擎 - Download下载 - 2 6 22
  12. 争对让望对思野葛对山栀注解_《笠翁对韵》四 支(4)
  13. 统计学考研笔记:正态分布置信区间计算题
  14. 码农:一次项目经历改掉了我代码洁癖,由4年小兵升为技术leader
  15. [Pandas] 数据形状df.shape
  16. 基于单片机的led阅读灯方案
  17. iostat 第一次数据信息不正确/过滤第一条数据
  18. Repeater控件动态变更列(Header,Item和Foot)信息
  19. php安装失败,phpcms安装失败怎么办
  20. 【小算法】图的遍历之深度优先(DFS)

热门文章

  1. 阿里云虚拟主机怎么搭建wordpress个人网站(新手详细版)
  2. uni-app 锚点跳转
  3. Ansible第一章:ansible的安装及部署
  4. 2019脱单指南 | 用Python数据解决单身问题
  5. 【早鸟免费票来啦】AI+5G+机器视觉赋能智能制造论坛(大咖云集)
  6. 2018武汉大学计算机英语分数线,2018武汉大学考研复试分数线已公布
  7. Python爬虫教程-爬取5K分辨率超清唯美壁纸源码
  8. jvm与jit编译器的区别_了解jvm和jit编译器的第1部分
  9. python阻塞子线程_Python多线程中阻塞与锁使用误区
  10. Mobox多人共同在线文档协同编辑的技术实现