一句话题意

给定n、m和k,求对于所有的i(0<=i<=n)和j(0<=j<=min(i,m)),有多少对(i,j)使\(C_i^j\)使k的倍数

数据范围

部分分、满分做法和思路

30pts

直接暴力套公式(不用杨辉三角)

90pts

杨辉三角+二分。

具体实现:用vectorv[2005],v[i]中的元素j都是使得(i,j)可以满足要求的j。那么给定n、m后,枚举n,二分m即可。

代码:

#include<bits/stdc++.h>
using namespace std;
int T,k,c[2005][2005];
vector<int>v[2005];
int main()
{
scanf("%d %d",&T,&k);
c[0][0]=c[1][0]=c[1][1]=1;
for(int i=2;i<=2000;i++)
{
for(int j=0;j<=2000;j++)
{
c[i][j]=(c[i-1][j]+c[i-1][j-1])%k;
if(c[i][j]%k==0) v[i].push_back(j);
}
}
while(T--)
{
int n,m;
scanf("%d %d",&n,&m);
int ans=0;
for(int i=2;i<=n;i++)
{
if(v[i].size()==0) continue;
int endd=min(m,i);
int l=0,r=v[i].size()-1,mid,tans=-1;
while(l<=r)
{
mid=(l+r)/2;
if(v[i][mid]>endd) r=mid-1;
else l=mid+1,tans=mid;
}
ans+=tans+1;
}
printf("%d\n",ans);
}
return 0;
}

100pts

(其实上面那种做法在我的电脑上能A。。但洛谷上T了两个点。不知道CCF少爷机会怎么样)

二分仍然太慢。让我们考虑预处理+O(1)回答每个询问的方法:前缀和(二维的)

用qian[i][j]表示n=i,m=j时有多少组解满足要求。很好实现。(r数组是辅助数组,r[i][j]表示n=i时的一维前缀和)

#include<bits/stdc++.h>
using namespace std;
int T,k,c[2005][2005],qian[2005][2005],r[2005][2005];
bool ok[2005][2005];
//vector<int>v[2005];
int main()
{
scanf("%d %d",&T,&k);
c[0][0]=c[1][0]=c[1][1]=1;
for(int i=2;i<=2000;i++)
{
for(int j=0;j<=i;j++)
{
c[i][j]=(c[i-1][j]+c[i-1][j-1])%k;
if(c[i][j]%k==0) ok[i][j]=1;
}
}
for(int i=1;i<=2000;i++)
{
r[i][0]=ok[i][0];
for(int j=1;j<=2000;j++)
{
r[i][j]=r[i][j-1]+ok[i][j];
}
}
for(int i=1;i<=2000;i++)
{
for(int j=0;j<=2000;j++)
{
qian[i][j]=qian[i-1][j]+r[i][j];
}
}
while(T--)
{
int n,m;
scanf("%d %d",&n,&m);
/*int ans=0;
for(int i=2;i<=n;i++)
{
if(v[i].size()==0) continue;
int endd=min(m,i);
int l=0,r=v[i].size()-1,mid,tans=-1;
while(l<=r)
{
mid=(l+r)/2;
if(v[i][mid]>endd) r=mid-1;
else l=mid+1,tans=mid;
}
ans+=tans+1;
}*/
printf("%d\n",qian[n][m>n?n:m]);
}
return 0;
}

LG P2822 NOIP2016D2T1 组合数问题的更多相关文章

  1. 【题解】洛谷P2822 [NOIP2016TG ]组合数问题 (二维前缀和+组合数)

    洛谷P2822:https://www.luogu.org/problemnew/show/P2822 思路 由于n和m都多达2000 所以暴力肯定是会WA的 因为整个组合数是不会变的 所以我们想到存 ...

  2. 【洛谷p2822】组合数问题

    (突然想          ??忘掉了wdt) (行吧那就%%%hmr) 组合数问题[传送门] (因为清明要出去培训数学知识所以一直在做数论) 组合数<=>杨辉三角形(从wz那拐来的技能 ...

  3. P5689 多叉堆

    写在前面 OI 生涯中 AC 的首道组合数学应用题. 开题 5min 发现规律,写了半下午代码,调了两天,然而甚至没过样例,心态崩了.几天之后重新写了一份代码才 AC. 虽然思维难度不大,但毕竟是联赛 ...

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

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

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

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

  6. Luogu P2822 组合数问题(前缀和)

    P2822 组合数问题 题意 题目描述 组合数\(C_n^m\)表示的是从\(n\)个物品中选出\(m\)个物品的方案数.举个例子,从\((1,2,3)\)三个物品中选择两个物品可以有\((1,2), ...

  7. AC日记——组合数问题 落谷 P2822 noip2016day2T1

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  8. 洛谷P2822 组合数问题

    输入输出样例 输入样例#1: 1 2 3 3 输出样例#1: 1 输入样例#2: 2 5 4 5 6 7 输出样例#2: 0 7 说明 [样例1说明] 在所有可能的情况中,只有C_2^1 = 2C21 ...

  9. 洛谷P2822组合数问题

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

随机推荐

  1. AcWing:239. 奇偶游戏(前缀和 + 离散化 + 带权并查集 + 异或性质 or 扩展域并查集 + 离散化)

    小A和小B在玩一个游戏. 首先,小A写了一个由0和1组成的序列S,长度为N. 然后,小B向小A提出了M个问题. 在每个问题中,小B指定两个数 l 和 r,小A回答 S[l~r] 中有奇数个1还是偶数个 ...

  2. Filebeat使用

    1.Beat家族 Beats可以直接(或者通过Logstash)将数据发送到Elasticsearch,在那里你可以进一步处理和增强数据,然后在Kibana中将其可视化. 2.FileBeat安装 2 ...

  3. 微擎转移服务器后,出现 require()错误,解决方案

    微擎中切换服务器后出现该问题,有可能是导致配置的问题

  4. 图及其衍生算法(Graphs and graph algorithms)

    1. 图的相关概念 树是一种特殊的图,相比树,图更能用来表示现实世界中的的实体,如路线图,网络节点图,课程体系图等,一旦能用图来描述实体,能模拟和解决一些非常复杂的任务.图的相关概念和词汇如下: 顶点 ...

  5. 前端知识点回顾——Javascript篇(六)

    fetch 在原生ajax+es6promise的基础上封装的一个语法糖,返回promise对象. fetch(url, initObj) .then(res=>res.json()) .the ...

  6. Mac下mysql服务端密码重置及环境配置

    一 停止mysql服务 关闭MySQL服务的操作: 苹果->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop mysql server) 二 进入终端,命 ...

  7. C++ STL——C++容器的共性和相关概念

    目录 一 STL容器共性机制 二 STL容器的使用场合 三 函数对象 四 谓词 五 内建函数对象 六 函数对象适配器 注:原创不易,转载请务必注明原作者和出处,感谢支持! 注:内容来自某培训课程,不一 ...

  8. LC 529. Minesweeper

    Let's play the minesweeper game (Wikipedia, online game)! You are given a 2D char matrix representin ...

  9. Nginx知识

    OpenResty最佳实践->location匹配规则传说中图片防盗链的爱恨情仇 ​

  10. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-1.单机和分布式应用的登录检验讲解

    笔记 第四章 开发在线教育视频站点核心业务之JWT微服务下的用户登录权限校验 1.单机和分布式应用的登录检验讲解     简介:讲解单机和分布式应用下登录校验,session共享,分布式缓存使用 1. ...