题目传送门。

非常简单的组合数学题。

首先从 \(n\) 对手套中恰好选出 \(k\) 对手套的方案数为 \(C_n^k\),然后由于我们要取出 \(m\) 只手套,那么取了 \(k\) 对手套后还要取 \(m-2k\) 只手套,我们得保证后面取的这 \(m-2k\) 对手套配不出一对手套,根据鸽笼原理,在最坏情况下,我们从 \(n-k\) 对手套中选不超过 \(n-k\) 只手套,是选不出一对手套的,于是我们就按照这种情况算,于是我们得出了 \(C_{n-k}^{m-2k}\),然后由于我们会选到一对手套的左手或右手,所以我们还要乘上 \(2^{m-2k}\),所以最后的答案为 \(C_n^k \times C_{n-k}^{m-2k} \times 2^{m-2k}\)。

至于什么是鸽笼原理,就是比如说班上如果有超过 \(12\) 个人一定有两个人出生月份相同,这就是鸽笼原理,证明也很简单,这里就不多说了。

然后由于这道题 \(1 \le n \le 1000\),直接使用组合数公式 \(C_n^m = C_{n-1}^m+C_{n-1}^{m-1}\),两遍 for 循环就能解决。

哦,当 \(m \le 2k\) 时,无解,因为无法选出 \(k\) 对手套,还有,就是当 \(m-2k>n-k\) 时,根据鸽笼原理很容易得出此时也是无解,配出的手套数量一定大于 \(k\)。但是这个无解情况是不用判断的,因为我们求组合数的数组 \(c\) 是全局数组,系统一开始会全部初始化为 \(0\),这样子当 \(m-2k>n-k\) 时,算出的组合数一定是 \(0\),\(0\) 乘任何数都等于 \(0\),所以不用判断这种情况。

十年 OI 一场空,不开 long long 见祖宗。

计算二的次幂时请使用快速幂或者预处理,不要使用左移或者 pow 函数,否则就会见祖宗!

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1e9+7;
const int N = 2e3+5;
int c[N][N],f[N];
signed main()
{
int _;
scanf("%lld",&_);
for(int i = 0;i<=N-5;i++)
{
for(int j = 0;j<=i;j++)
{
c[i][j] = !j?1:(c[i-1][j]+c[i-1][j-1])%mod;
}
}
f[0] = 1;
for(int i = 1;i<=N-5;i++)
{
f[i] = f[i-1]*2%mod;
}
while(_--)
{
int n,m,k;
scanf("%lld %lld %lld",&n,&m,&k);
if(m<2*k)
{
printf("0\n");
continue;
}
printf("%lld\n",c[n][k]*c[n-k][m-2*k]%mod*f[m-2*k]%mod);
}
return 0;
}

洛谷P11250 [GESP202409 八级] 手套配对 题解的更多相关文章

  1. 洛谷P1854 花店橱窗布置 分析+题解代码

    洛谷P1854 花店橱窗布置 分析+题解代码 蒟蒻的第一道提高+/省选-,纪念一下. 题目描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定 ...

  2. HAOI2006 (洛谷P2341)受欢迎的牛 题解

    HAOI2006 (洛谷P2341)受欢迎的牛 题解 题目描述 友情链接原题 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之 ...

  3. 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)

    洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...

  4. 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)

    洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...

  5. BZOJ4946 & 洛谷3826 & UOJ318:[NOI2017]蔬菜——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4946 https://www.luogu.org/problemnew/show/P3826 ht ...

  6. 洛谷1578:[WC2002]奶牛浴场——题解

    https://www.luogu.org/problemnew/show/P1578#sub 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建 ...

  7. 洛谷P2460 [SDOI2007]科比的比赛(题解)(贪心+搜索)

    科比的比赛(题解)(贪心+搜索) 标签:算法--贪心 阅读体验:https://zybuluo.com/Junlier/note/1301158 贪心+搜索 洛谷题目:P2460 [SDOI2007] ...

  8. 洛谷 P1146 【硬币翻转】题解

    很久很久之前做过的一道题 翻n-1枚硬币,就是有一枚不翻,也可以理解为翻一枚 直接上程序,看程序说话 #include<iostream> using namespace std; ; b ...

  9. 洛谷P1972 [SDOI2009]HH的项链 题解

    [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不 ...

  10. 洛谷 p1352 没有上司的舞会 题解

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...

随机推荐

  1. 【MyBatis】学习笔记14:通过collection解决一对多的映射关系

    MyBatis14:通过collection解决一对多的映射关系 目录 MyBatis14:通过collection解决一对多的映射关系 对象 接口 映射文件 测试 总结 注意事项 已知,一个部门对应 ...

  2. Qt编写物联网管理平台40-类型种类

    一.前言 为了增强本系统的拓展性,做成通用的物联网管理平台,特意将控制器主设备类型.探测器子设备类型.对应种类符号等信息,全部做成表格可自定义添加和修改,这样在控制器信息表和探测器信息表管理的时候,可 ...

  3. Qt数据库应用7-导出打印QTableWidget/QTableView数据

    一.前言 本组件的初衷就是造一个轮子,让数据导入导出用法极致简单,几个行数几行代码搞定它,适用大部分的应用场景,这也是本组件和qtxls最大的区别,qtxls的目标是大而全,提供各种xls的接口,至于 ...

  4. 9.4java考试订正

    import java.util.Scanner; public class viovo { static int number = 5;//五个商品信息 static oppo[] s = new ...

  5. WW中文地名标注:输出*.wwp和*.wpl文件

    链接1:WW中文地名标注工具----3月4日更新增加OZI航点航迹读入 链接2:中文地标库终结者---------WW中的地名/地标中文化(含40万条中文地名)3月4日更新 链接3:地图浏览器

  6. 网络编程入门从未如此简单(三):什么是IPv6?漫画式图文,一篇即懂!

    本文由小枣君分享,文案:小枣君.漫画:杨洋,来自鲜枣课堂,有少许改动,原文链接见文末. 1.引言 网络编程能力对于即时通讯技术开发者来说是基本功,而计算机网络又是网络编程的理论根基,因而深刻准确地理解 ...

  7. 创建企业级地理数据库——PostgreSQL版

    创建PostgreSQL空间数据库 填写相应的参数,选择授权文件 报错 默认安装postgresql后,执行以上操作报错 "You must copy the latest ST_GEOME ...

  8. Mac 下erlang及rabbitmq安装

    --------------------------------------- 1.首先,安装Homebrew安装Homebrew遇到的问题参考这个链接 2.安装erlang环境brew instal ...

  9. biancheng-Spring Cloud Alibaba Sentinel

    http://c.biancheng.net/springcloud/sentinel.html Sentinel 是由阿里巴巴中间件团队开发的开源项目,是一种面向分布式微服务架构的轻量级高可用流量控 ...

  10. 推荐几个不错的 Linux 服务器管理工具

    前言 选择一款好的 Linux 服务器管理工具能够极大地提高运维效率,保障业务连续性.今天大姚给大家分享3款不错的 Linux 服务器管理工具,希望可以帮助到有需要的同学. 1Panel 1Panel ...