xtu oj 1194 Recipient

题目描述

快递小哥每天都辛苦的送快递,今天他需要送N份快递给N个收件人,第i份快递需要送给第i个收件人。 请问其中发生恰好K个送错了的情况数是多少?

输入

存在多样例。 每行输入两个整数N和K,1≤N≤1000,0≤K≤N。 如果两个都为0,则表示输入结束,这个样例不需要处理。

输出

每行输出一个样例的结果,因为数值会比较大,所有结果需要对109+7取模。

样例输入
1 1
2 1
3 2
1000 1000
0 0

样例输出
0
0
3
37043040

AC代码

#include<stdio.h>
#define mod 1000000007
#define N 1005
#define ll long long
ll dp[N][N]={};//杨辉三角
ll D[N]={};//错排 
void init(){
	int i,j;
	D[2]=1;
	for(i=3;i<N;i++){
		D[i]=(i-1)*(D[i-1]+D[i-2])%mod;
	}
    for(i=0;i<N;i++){
		dp[i][0]=1;
		dp[i][i]=1;
	}
	for(i=1;i<N;i++){//动态规划思想 
		for(j=1;j<i;j++){
			dp[i][j]=(dp[i-1][j]+dp[i-1][j-1])%mod;
		}
	}
} 
int main()
{
	init();
	int n,k;
	while(scanf("%d%d",&n,&k)!=EOF){
		if(n==0&&k==0)break;
		if(k==0)printf("1\n");
		else{
			printf("%I64d\n",D[k]*dp[n][k]%mod);
		} 
	}
}

解题思路:动态规划+错排思想,动态规划可参考1354 Robot这道题。先求出n个元素错误排列数,即D(n),再就是从n个元素取k个元素的方案数,就是求组合数C(n,k),C(n,k)*D(n)即为恰好K个送错了的情况数。

求组合数,杨辉三角求组合数是很常用的一种方法。为什么杨辉三角可以求组合数呢?分析如下

杨辉三角

dp[i][j]=dp[i-1][j]+dp[i-1][j-1]

dp[i][0]=dp[i][i]=1

组合数

这和杨辉三角的表示是一样的,所以可以用杨辉三角表示组合数。

错排

考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。n个元素的错排数记为D(n)。

错排公式

D(n)=(n-1)(D(n-1)+D(n-2))

初始值:D(1)=0,D(2)=1

要注意考虑特殊值:当k=0时,即全部送对,只有一种情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/242136.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL必会的常用函数

目录 条件函数 if IF(条件表达式,值1,值2) 如果条件表达式为True&#xff0c;返回值1&#xff0c;为False,返回值2. 返回值可以是任何值&#xff0c;比如&#xff1a;数值&#xff0c;文本&#xff0c;日期&#xff0c;空值&#xff0c;NULL&#xff0c;数学表达式&#xff…

Github入门

简介 github是一个基于git的代码仓库&#xff0c;可以通过git来上传和下载代码。国内类似的有gitee。 开源项目一般会申明开源协议。我们可以基于可商用的代码开发我们自己的项目&#xff0c;以期进行快速开发。 一般情况下gitee上的项目基本都够我们使用了。 git基础 Git…

Java笔记草稿——已完成

导航&#xff1a; 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客 推荐学习视频&#xff1a; 黑马程序员全套Java教程_哔哩哔哩 尚硅谷Java入门视频教程_哔哩哔哩 目录 零…

SOLIDWORKS CSWE认证考试报名

​ SOLIDWORKS CSWE是高级别的SOLIDWORKS认证&#xff0c;是一项充满挑战性的艰巨任务。CSWE测试不是简单注册就可以的&#xff0c;是要有一定资格才能参加考试&#xff0c;您首先需要获得CSWP证书&#xff0c;然后还得通过5个CSWPA系列主题考试中的至少4个主题&#xff08;钣金…

七天搞定软件测试,这一篇教程就够了,学完最少能拿13k

前言 在软件开发的世界中&#xff0c;软件测试是不可或缺的一部分。它是确保软件质量、功能完整性和用户满意度的关键环节。本文小编将为大家介绍各类软件测试的奥秘&#xff0c;并提供入门级的指导和见解。 本文内容概要&#xff1a; 软件测试是什么&#xff1f;黑盒测试vs…

2023-12-13 VsCode + CMake + Qt环境搭建

点击 <C 语言编程核心突破> 快速C语言入门 VsCode CMake Qt环境搭建 前言一、前期准备二、具体设置总结 前言 要解决问题: 最近研究 Qt, 使用 qtcreator, 发现在搭建 UI 界面时候很方便, 但到编码和调试就比较有问题了. 想到的思路: 用 VSCode 进行编码及调试. 其它…

基于SSM实现的精品课程网站

一、系统架构 前端&#xff1a;jsp | js | css | jquery | bootstrap 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.7 | mysql | maven | tomcat 二、代码及数据库 三、功能介绍 01. 登录页 02. web端-首页 03. web端-视频教程 04. web端-资料…

Flutter在Android Studio上创建项目与构建模式

一、安装插件 1、前提条件&#xff0c;安装配置好Android Studio环境 2、安装Flutter和Dart插件 Linux或者Windows平台&#xff1a; 1&#xff09;、打开File > Settings。 2&#xff09;、在左侧列表中&#xff0c;选择"Plugins"右侧上方面板选中 "Market…

Redis - 做缓存时高并发问题:缓存穿透、击穿、雪崩,数据库缓存双写不一致

缓存穿透 当用户访问的数据既不在缓存也不在数据库中时&#xff0c;就会导致每个用户查询都会“穿透” 缓存“直抵”数据库。这种情况就称为缓存穿透。当高度发的访问请求到达时&#xff0c;缓存穿透不 仅增加了响应时间&#xff0c;而且还会引发对 DBMS 的高并发查询&…

Python + Appium 自动化操作微信入门看这一篇就够了!

简介 Appium 是一个开源的自动化测试工具&#xff0c;支持 Android、iOS 平台上的原生应用&#xff0c;支持 Java、Python、PHP 等多种语言。 Appium 封装了 Selenium&#xff0c;能够为用户提供所有常见的 JSON 格式的 Selenium 命令以及额外的移动设备相关的控制命令&#x…

K8S(五)—命名空间与资源配额

目录 命名空间(Namespace)命令计算资源配额创建命名空间绑定一个ResourceQuota资源将命名空间和资源限制对象进行绑定尝试创建第二个 Pod查看ResourceQuota 绑定第二个ResourceQuota为命名空间配置默认的 CPU 、memory请求和限制&#xff08;1&#xff09;Pod 中所有容器都没有…

【C++进阶篇】二叉搜索数

目录 前言&#xff1a; 以后我们要学map&#xff0c;set&#xff0c;AVL&#xff0c;红黑数所以必须要有二叉搜索数做铺垫 1、二叉搜索树概念 2.二叉搜索树操作 1.二叉搜索树的查找 a、从根开始比较&#xff0c;查找&#xff0c;比根大则往右边走查找&#xff0c;比根小则…

感知机(perceptron)

一、感知机 1、相关概念介绍 感知机&#xff08;perceptron&#xff09;是二分类的线性分类模型&#xff0c;属于监督学习算法。输入为实例的特征向量&#xff0c;输出为实例的类别&#xff08;取1和-1&#xff09;。 2、&#xff08;单层&#xff09;感知机存在的问题 感知机…

上课犯困怎么办

我们小时候都有过这样的经历&#xff1a;在课堂上&#xff0c;突然感到困倦&#xff0c;无法集中精力听讲。这不仅影响了学习效果&#xff0c;还可能错过重要的知识点。那么&#xff0c;上课犯困怎么办呢&#xff1f;下面就给大家提供几点建议。 保证充足的睡眠 保证充足的睡眠…

节流防抖:提升前端性能的秘密武器(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【音视频 | H.264】H.264编码详解

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

VMware安装ContOS 7 提示“客户机操作系统已禁用 CPU。请关闭或重置虚拟机。”

目录 实验环境报错截图报错原因猜测&#xff08;根据实验现象&#xff09;解决办法如下 实验环境 Vmware Workstation 17.5 CentOS7 镜像版本&#xff1a;2207-02版本 注意&#xff1a;2009版本并无该错误 报错截图 报错原因猜测&#xff08;根据实验现象&#xff09; CentO…

MIT6.824-Raft笔记6:不一致log处理、日志快照

本部分主要是关于不一致的日志是怎么决策和取舍的。同时对于日志的恢复&#xff0c;通过快照的方式提高恢复的效率。 1. 不一致log的处理 在我们分析之前&#xff0c;我们需要明白这个场景是否真的存在&#xff0c;因为有些场景不可能存在我们也就没必要考虑它。即需要思考这种…

使用PM2,在生产环境稳定运行你的node项目

PM2 一个 node&#xff0c;本身就用几行代码&#xff0c;就可以启动个 server 进程&#xff0c;监听个端口&#xff0c;为大家提供 Web 服务 一、依赖安装 npm install pm2 -g 二、命令行启动 普通执行启动 pm2 start <js 文件路径 >.js 携带参数启动 pm2 start < 某种…

k8s debug 浅谈

一 k8s debug 浅谈 说明&#xff1a; 本文只是基于对kubectl debug浅显认识总结的知识点,后续实际使用再补充案例 Kubernetes 官方出品调试工具上手指南(无需安装&#xff0c;开箱即用) debug-application 简化 Pod 故障诊断: kubectl-debug 介绍 1.18 版本之前需要自己…