当前位置: 首页 > news >正文

完全错排问题

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=451

就是求C(n, n-m)*s(m)的值啦,C(n, n-m)表示从n个人中任取n-m个人的组合数,s(m)表示m对人和纸条的完全错排种数;

组合数求法很简单就不细说了,推一下完全错排计算公式好了;

假设现在有编号1~m的m个求和编号1~m的m个盒子,将m个求均分到m个盒子中,且1号球不能放1号盒子,2号球不能放2号盒子。。。(m个球完全错排);

用s(m)表示m个球的完全错排方法数;

假设先放1号球,可以放编号2~m的盒子,有m-1种放法(先放任意编号的球都是一样的),假设后面m-1个球有a中放法,则s(m)=(m-1)*a;

假设1号球放在2号盒子里,接下来我们考虑:

  (1):假设2号球放在1号盒子里,剩余的球有s(m-2)种放法;

  (2):假设2号球不放1号盒子里,这时我们可以将1号盒子和2号盒子换下位子,(因为2号球不放1号盒子,所以我们可以把1号盒子当做2号盒子来看,这点比较难理解但很关键),

     于是我们可以得到剩余的球有s(m-1)种放法;

所以a=s(m-1)+s(m-2);

即:s(m)=(m-1)*(s(m-1)*s(m-2);

 

代码:

 1 #include <bits/stdc++.h>
 2 #define MAXN 20+10
 3 #define ll long long
 4 using namespace std;
 5 
 6 ll cc(ll n, ll m){
 7     ll ans=1; 
 8     for(ll i=n, k=1; k<=m; k++, i--){
 9         ans*=i;
10     }
11     for(int i=1; i<=m; i++){
12         ans/=i;
13     }
14     return ans;
15 }
16 
17 int main(void){
18     ll n, m, a[MAXN];
19     a[2]=1, a[3]=2;
20     for(int i=4; i<MAXN; i++){
21         a[i]=(i-1)*(a[i-1]+a[i-2]);
22     }
23     while(scanf("%lld%lld", &n, &m)!=EOF){
24         ll ans=cc(n, n-m)*a[m];
25         cout << ans << endl;
26     }
27     return 0;
28 }

 

转载于:https://www.cnblogs.com/geloutingyu/p/5943953.html

相关文章:

  • sql相关记录
  • mysql 5.7.15 安装配置方法图文教程(转)
  • 2015年最新高清大內WEB前端开发视频教程
  • Linux(Debian)上安装Redis教程
  • 北大OJ 1001题
  • Android中软键盘弹出时底部菜单上移问题
  • to_date to_char
  • master-slave(主/从)模式
  • moogodb3.x总结
  • Maven中setting.xml 配置详解
  • 经历:easyui的layout自适应高度布局
  • Tern Sercer Tineout
  • 前端自动化之路之gulp,node.js
  • ajax技术的基本概述
  • python中单引号,双引号,多引号区别
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 07.Android之多媒体问题
  • Android系统模拟器绘制实现概述
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • es6
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • java概述
  • Js基础知识(一) - 变量
  • Mac转Windows的拯救指南
  • magento 货币换算
  • Redis 中的布隆过滤器
  • webpack入门学习手记(二)
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 积累各种好的链接
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​学习一下,什么是预包装食品?​
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (C++)八皇后问题
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (三)docker:Dockerfile构建容器运行jar包
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (原創) 物件導向與老子思想 (OO)
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET基础篇——反射的奥妙
  • .NET下ASPX编程的几个小问题
  • /etc/skel 目录作用
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [ 转载 ] SharePoint 资料
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [Assignment] C++1
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [DM复习]关联规则挖掘(下)
  • [GN] 设计模式——面向对象设计原则概述
  • [IE编程] 如何编程清除IE缓存