P2822 组合数问题

题意

题目描述

组合数\(C_n^m\)表示的是从\(n\)个物品中选出\(m\)个物品的方案数。举个例子,从\((1,2,3)\)三个物品中选择两个物品可以有\((1,2),(1,3),(2,3)\)这三种选择方法。根据组合数的定义,我们可以给出计算组合数\(C_n^m\)的一般公式:

\[C_n^m=\frac{n!}{m!(n-m)!}
\]

其中\(n!=1\times 2\times \cdots \times n\);特别地,定义\(0!=1\)。

小葱想知道如果给定\(n,m\)和\(k\),对于所有的\(0\leq i\leq n,0\leq j\leq \min \left( i, m \right)\)有多少对\((i,j)\)满足\(C_i^j\)是\(k\)的倍数。

输入输出格式

输入格式:

第一行有两个整数\(t,k\),其中\(t\)代表该测试点总共有多少组测试数据,\(k\)的意义见问题描述。

接下来\(t\)行每行两个整数\(n,m\),其中\(n,m\)的意义见问题描述。

输出格式:

共\(t\)行,每行一个整数代表所有的\(0\leq i\leq n,0\leq j\leq \min \left( i,m\right)\)中有多少对\((i,j)\)满足\(C_i^j\)是\(k\)的倍数。

输入输出样例

输入样例#1:

1 2
3 3

输出样例#1:

1

输入样例#2:

2 5
4 5
6 7

输出样例#2:

0
7

说明

【样例1说明】

在所有可能的情况中,只有\(C_2^1=2\)是\(2\)的倍数。

【子任务】

思路

\(10\)个月以前,当我和一位数竞党聊起这道题的时候,他启发我,可以利用\(k\)的特性来特判每一个数据点。当时的我嫌麻烦,没有这样写。如今问了\(Mercury\)这道题的做法,才发现正解才是\(OI\)思维,之前的想法太偏数学了。

首先,杨辉三角的值与组合数相同,我们可以用求杨辉三角的方法很快求出组合数。在求的过程中,组合数对\(k\)取模,若该位为\(0\),则说明它是\(k\)的倍数。

然后就是这道题的精髓了:用一个二维数组\(s[i][j]\)统计组合数为\(0\)的情况的前缀和。转移方法是:\(s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+[c[i][j]=0]\)。

然后直接输出前缀和就好啦。

AC代码

#include<bits/stdc++.h>
using namespace std;
int t,k,a[2005][2005],s[2005][2005];
int read()
{
int re=0;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) re=(re<<3)+(re<<1)+ch-'0',ch=getchar();
return re;
}
int main()
{
t=read(),k=read();
a[1][1]=1;
for(int i=2;i<=2001;i++)
{
for(int j=1;j<=i;j++) a[i][j]=(a[i-1][j-1]+a[i-1][j])%k;
for(int j=1;j<=i;j++) s[i][j]=s[i][j-1]+(!a[i][j]);
for(int j=i+1;j<=2001;j++) s[i][j]=s[i][i];
for(int j=1;j<=2001;j++) s[i][j]+=s[i-1][j];
}
while(t--)
{
int x=read(),y=read();
printf("%d\n",s[x+1][y+1]);
}
return 0;
}

Luogu P2822 组合数问题(前缀和)的更多相关文章

  1. Luogu P2822 组合数问题

    思路 组合数的话,首先肯定是想到杨辉三角啊.不傻的都知道要预处理一张组合数表,但是你以为这样就可以了吗???显然,不可能的.那询问的时候复杂度就成了$\large{O(t*n)}$,凉凉.那咋办,用二 ...

  2. P2822 组合数问题——巧用前缀和

    P2822 组合数问题 求的是C(i,j)有多少个是k的倍数: 首先,求组合数是有技巧的, 用杨辉三角求组合数,爽的一批: 但是,这样只能得90分,两个点T了: 因为k是不变的,我们可以用前缀和的思想 ...

  3. CJOJ 2255 【NOIP2016】组合数问题 / Luogu 2822 组合数问题 (递推)

    CJOJ 2255 [NOIP2016]组合数问题 / Luogu 2822 组合数问题 (递推) Description 组合数\[C^m_n\]表示的是从n个物品中选出m个物品的方案数.举个例子, ...

  4. Luogu P2822 [NOIp2016提高组]组合数问题 | 数学、二维前缀和

    题目链接 思路:组合数就是杨辉三角,那么我们只要构造一个杨辉三角就行了.记得要取模,不然会爆.然后,再用二维前缀和统计各种情况下组合数是k的倍数的方案数.询问时直接O(1)输出即可. #include ...

  5. 洛谷P2822 组合数问题(题解)

    https://www.luogu.org/problemnew/show/P2822(题目传送) 先了解一下有关组合数的公式:(m在上,n在下) 组合数通项公式:C(n,m)=n!/[m!(n-m) ...

  6. 洛谷P2822组合数问题

    传送门啦 15分暴力,但看题解说暴力分有30分. 就是找到公式,然后套公式.. #include <iostream> #include <cstdio> #include & ...

  7. 洛谷 P2822 组合数问题

    题目描述 组合数C_n^mC​n​m​​表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的 ...

  8. 洛谷——P2822 组合数问题

    https://www.luogu.org/problem/show?pid=2822 题目描述 组合数C_n^mC​n​m​​表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三 ...

  9. P2822组合数问题

    组合数问题(NOIP2016提高组Day2T1) Time Limit:1000MS  Memory Limit:512000K [题目描述] 组合数表示的是从n个物品中选出m个物品的方案数.举个例子 ...

随机推荐

  1. C#利用栈实现字符串运算解析

    附上参考文章链接:https://blog.csdn.net/qq_34831781/article/details/80104219 本人整合修复一些bug后的代码 using System; us ...

  2. 牛客多校第十场 H Stammering Chemists 判断图同构

    题意: 给出一个无向图,表示一种有机物质的结构式,问你这个有机物质是列表中的哪个. 题解: 判断图同构需要枚举全排列以对应点,但是此题中几乎只需要将点度数排序后一个一个比较,对于甲基位置再加个特判即可 ...

  3. Spring Boot 整合 Shiro+Thymeleaf

    1.导包 <!-- springboot 与 shiro 的集成--> <dependency> <groupId>org.apache.shiro</gro ...

  4. CSS Sprites(CSS图像拼合技术)教程、工具集合

    本集合是有一位国外设计师收集整合,并由 oncoding翻译成中文的,感谢他们的辛苦贡献.CSS Sprites技术在国外并不是什么新技术,只不过近两年(尤其08年开始)中国开始流行这个词,大家也开始 ...

  5. Response案例1_重定向

    import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.serv ...

  6. 如何收集项目日志统一发送到kafka中?

    上一篇(http://qindongliang.iteye.com/blog/2354381 )写了收集sparkstreaming的日志进入kafka便于后续收集到es中快速统计分析,今天就再写一篇 ...

  7. Apache2.2+tomcat7 负载均衡配置

    思路及步骤:第一步配置tomcat,第二步配置apache 服务器,第三步添加项目到tomcat中并测试 第一步配置tomcat 1,打开 第一个tomcat,conf文件夹下的server.xml ...

  8. microk8s 1.14本地Registry及DNS配置

    microk8s 从1.14 开始, 使用containerd 代替原来自带的microk8s.docker, 据说是出于性能和与主机docker共存的考虑. 使用本地Registry加速镜像 mic ...

  9. [转]SpringMVC框架入门配置 IDEA下搭建Maven项目

    初衷:本人初学SpringMVC的时候遇到各种稀奇古怪的问题,网上各种技术论坛上的帖子又参差不齐,难以一步到位达到配置好的效果,这里我将我配置的总结写到这里供大家初学SpringMVC的同僚们共同学习 ...

  10. Vue+Iview+Node 项目结构和配置

    1.项目调整后的目录 api:数据接口定义 assets:静态文件 components:组件  config:项目相关配置  driective:指令   router:路由   store:状态管 ...