题目链接:HDU 2068

要求答对一半或以上就算过关,请问有多少组答案能使他顺利过关。

我们倒过来想,求答错一半或以下的组数

错排

错排公式的由来

  pala提出的问题: 十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法?
  这个问题推广一下,就是错排问题: n个有序的元素应有n!种不同的排列。如若一个排列式的所有的元素都不在原来的位置上,则称这个排列为错排。
递推的方法推导错排公式

  当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.
  第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;
  第二步,放编号为k的元素,这时有两种情况.1,把它放到位置n,那么,对于剩下的n-2个元素,就有M(n-2)种方法;2,不把它放到位置n,这时,对于这n-1个元素,有M(n-1)种方法;
  综上得到
  M(n)=(n-1)[M(n-2)+M(n-1)]
  特殊地,M(0)=1,M(1)=0;


可以看出,我们只要确定哪几个答错了,然后求出这几个的错排数即可, 也就是这几个有多少种可能的排列使它们都不在原来位置上, 就是错排!

组合

答对 i 个人,即答错 n - i 个人,共有C(n, n - i) * M[n - i] 组答案

其中C(n, n - i) 就是从 n 个人选出 n - i 个人的组合数

【源代码】

#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll m[20] = {1,0};
ll C(int b,int a){ll ans = 1;for(int i=1;i<=a;i++){ //求组合数ans = ans*(b - i +1)/i;}return ans;
}
void init(){for(int i=2;i<15;i++){ //25 的一半就行m[i] = (i-1)*(m[i-2]+m[i-1]); }// cout<<m[14]<<endl;
}
int main(){int n;init();while(scanf("%d",&n)!=EOF && n){ll ans = 0;for(int i=0;i<=n/2;i++){ // 选错0 个 到 选错一半求和。ans += C(n,i)*m[i];}cout<<ans<<endl;}return 0;
}

转载于:https://www.cnblogs.com/chaiwenjun000/p/5321156.html

HDU 2068 RPG 的错排(错排问题,组合数)相关推荐

  1. 召回 粗排 精排,如何各司其职?

    文 | 水哥 源 | 知乎 saying 1.AB测试几乎是系统改进的不二法则,算法做AB,开发做AB,产品做AB,运营更要做AB 2.召回有点像一个甩锅侠,我不管我给的准不准,我就管我把潜在的能投的 ...

  2. FullCalendar 日历插件排班表排课表保姆级详解(可拖动排班排课)

    (基于vue)实现效果 文章目录 前言 一.FullCalendar是什么? 二.使用步骤 1.引入库 2.html部分代码 3.css样式代码(样式我单独写个scss文件引入的) 4.逻辑代码部分 ...

  3. 考研数学:【以错补错】 降低做题出错率

    考研数学:以错补错 降低做题出错率 众所周知,数学需要做题,需要通过做题来巩固掌握,但很多同学却陷入了题海战术,把所有的精力都放在数学练习上,一门心思做题,可几个月下来却没有进展,光荣地成为了一名考研 ...

  4. 召回粗排精排-级联漏斗(下)

    文 | 水哥 源 | 知乎 saying 召回区分主路和旁路,主路的作用是个性化+向上管理,而旁路的作用是查缺补漏. 推荐系统的前几个操作可能就决定了整个系统的走向,在初期一定要三思而后行. 做自媒体 ...

  5. 召回粗排精排-级联漏斗(上)

    文 | 水哥 源 | 知乎 saying 1. 把点击多的item曝光提升是推荐模型的基本能力,也是基本要求.后验不好的曝光提高也可能是好模型,后验好的曝光不提高,可以开除推荐模型了 2. 在起量阶段 ...

  6. 这个省3月23日开始错时错峰开学,在校不要求戴口罩!

    3月17日,云南省召开2020年春季学期开学和校园疫情防控工作视频会,省教育厅厅长周荣在会议讲话中表示,开学时间不变. 此前,云南省教育厅发布<关于做好2020年春季学期开学准备工作的通知> ...

  7. 说你又不听,听你又不懂,懂你又不做,做你又做错,错你又不认,认你又不改,改又不服,不服也不说

    今天看到的最有意思的话 说你又不听,听你又不懂,懂你又不做,做你又做错,错你又不认,认你又不改,改又不服,不服也不说

  8. 【编程题目】12 个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,...

    80.阿里巴巴一道笔试题(运算.算法) 问题描述: 12 个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高, 问排列方式有多少种? 我的思路:输入从小到大排列的数字   ...

  9. CJT长江连接器A2005系列线对板连接器排针排母PCB封装库

    长江连接器(CJT)可以提供多种形式的连接器,如线对板连接器.板对板连接器以及刺破连接器,其中A2005系列线对板连接器是一种常见系列型号,也称为排针排母.2.00mm间距,包含多种样式,比如单排直插 ...

  10. CJT长江连接器A1276系列线对板连接器排针排母PCB封装库

    长江连接器(CJT)可以提供多种形式的连接器,如线对板连接器.板对板连接器以及刺破连接器,其中A1276系列线对板连接器是一种常见系列型号,也称为排针排母.1.27mm间距,包含多种样式,比如单排直插 ...

最新文章

  1. 转载 CreateWaitableTimer和SetWaitableTimer函数
  2. python 快速排名发包_2020年SEO快速排名发包技术及原理
  3. 梯度下降 最小二乘法 matlab,最小二乘法和梯度下降法的理解
  4. centos安装java的jdk
  5. 中文版putty后门事件的曝光过程及我们所受到的报复
  6. PHP函数库06:PHP统计字符串里单词出现次数
  7. 为什么这么多应届生要进入互联网行业?
  8. 1. 3款免费好用的Markdown笔记应用,可以替代印象笔记
  9. 【渝粤教育】电大中专测量学 (4)作业 题库
  10. Google Chrome谷歌旧版本下载
  11. eclipse查看ftl文件
  12. python中字典keys、values、items的使用_Python学习笔记字典之keys()、values()和 items()方法...
  13. linux 网站服务器优化 web server优化
  14. java节假日算法_java处理节假日和工作时间的工具类
  15. 红黑树时间复杂度为什么是O(logn)?
  16. shift+右键,没有“在此处打开命令窗口”选项
  17. cocoscreator数字增长动画
  18. Anaconda3安装
  19. 开始连载长篇小说《星辰傀儡线》
  20. PYTHON练习题:快递信息分拣程序代码(附源码与代码注释)

热门文章

  1. 对文件、字符串和byte数组进行MD5加密
  2. Python+Appium+夜神模拟器安装与简单运行(2/2)
  3. 哪个oracle工具可以免费,Sqlite导入Oracle工具下载官方免费版_SqliteToOracle2.2英文版 - 系统之家...
  4. mysql自增主键到头了怎么办_数据库自增主键用完了怎么办
  5. 网络管理软件免费linux,最新Xmanager Power Suite6网络管理工具免费官方下载6.0.199 - 系统之家...
  6. C语言获取linux接口状态,[linux] C语言Linux系统编程-TCP通信的11种状态
  7. ykhmi是什么触摸屏软件_触摸屏如何读写变频器参数?如何控制变频器?实操步骤及方法分享...
  8. python数据集_在Python中如何差分时间序列数据集
  9. Go基础:不同数据类型作为函数参数传递值传递/地址(引用)传递判断
  10. 深入理解JVM虚拟机(5)——JVM虚拟机类加载机制概述