当前位置: 首页 > news >正文

[NOIP 2016 提高组] 组合数问题

我们先考虑暴力,暴力枚举每一个\(i,j\)暴力算\(\binom{i}{j}\)
时间复杂度为\(O(T*N^3)\),显然超时

然后我们发现\(N,M \le2000\)
我们考虑使用组合数的递推公式预处理\(\binom{0}{0}\)\(\binom{2000}{2000}\)

这里说一下组合数递推公式\(\binom{i}{j}=\binom{i-1}{j-1}+\binom{i-1}{j}\)
可以从组合意义上来理解 我们从\(i\)个数中选\(j\)个数,对于每一个数可以分为选与不选两种情况,选的时候即\(\binom{i-1}{j-1}\),在剩下的\(i-1\)个数里选\(j-1\)个数,不选的时候即\(\binom{i-1}{j}\),在剩下的\(i-1\)个数里选出\(j\)个数.

但是这样复杂度为\(O(T*N^2+N^2)\),依旧无法通过,事实上我们需要一种不需要枚举\(i,j\)的方法才能通过。

我们发现对于多个询问,\(k\)始终为定值,于是考虑前缀和优化,设\(ans_{i,j}\),在预处理时,若\(k|\binom{i}{j}\),则将\(ans_{i,j}+1\)。然后套用二维前缀和。但是我们发现,二维前缀和递推时 \(ans_{i,j}=ans_{i-1,j}+ans_{i,j-1},-ans_{i-1,j-1}+[k|\binom{i}{j}]\),在处理到边界时,我们会用未处理的值(因为此时\(i<j\))来更新。
但是我们又发现

对于所有的 \(0\leq i\leq n,0\leq j\leq \min \left ( i, m \right )\) 有多少对 \((i,j)\) 满足 \(k|\binom{i}{j}\)

于是我们直接将未处理的值设为同一行上一个值

由此即可AC这道题了!

点我展开看代码
```cpp#include <bits/stdc++.h>using namespace std;#define int long longint t,n,m,k,c[2008][2008],ans[2008][2008];void init(){c[0][0]=1;c[1][0]=c[1][1]=1;for(int i=2;i<=2000;i++){c[i][0]=1; for(int j=1;j<=i;j++){c[i][j]=(c[i-1][j-1]+c[i-1][j])%k;ans[i][j]=ans[i-1][j]+ans[i][j-1]-ans[i-1][j-1];if(c[i][j]==0){ans[i][j]++;} }ans[i][i+1]=ans[i][i]; }}signed main(){cin>>t>>k;init(); while(t--){cin>>n>>m;if(n<m){cout<<ans[n][n]<<"\n";} else{cout<<ans[n][m]<<"\n"; }}return 0;}
```
http://www.zskr.cn/news/14394.html

相关文章:

  • 利用接口中的静态虚拟成员实现自定义配置节
  • 【Rust GUI开发入门】编写一个本地音乐播放器(10. 拼装UI组件) - Jordan
  • 【Leetcode】随笔 - 详解
  • STM32 智能垃圾桶项目笔记(一):超声波模块(HC-SR04)原理与驱动实现 - 教程
  • 威佐夫博弈(Wythoff‘s Game)
  • Python 正则表达式实战:一文搞定文本处理
  • 详细介绍:Music Tag Web 怎么安装 ffmpeg?
  • 作业-1
  • 2025 年快速卷帘门品牌最新推荐排行榜:聚焦智能定制与高效供货,精选快速卷帘门实力厂家
  • 植物大战僵尸融合版下载安装教程【PC/安卓/iOS 完整攻略 + 常见问题解决】 - 详解
  • 两场div3 逆向思维
  • 题解:B4410 [GESP202509 一级] 金字塔
  • 2025.9.30总结 - A
  • Java入门级教程21——Java 缓存技术、RMI远程办法调用、多线程分割大档案
  • java从word模板生成.doc和.wps文件
  • 函数-参数+作用域
  • 思路探索:当大型语言模型遇见数据分析的现实挑战 - 教程
  • 读博期间的工作节奏与身心状态管理经验总结
  • 【Rust GUI开发入门】编写一个本地音乐播放器(7. 制作歌词显示面板) - Jordan
  • 【Nordic】nRF9151的SLM例程常用AT指令说明
  • Codeforces 2149G Buratsuta 3 题解 [ 蓝 ] [ 摩尔投票 ] [ 线段树 ] [ 随机化 ] [ 主席树 ] [ 根号分治 ]
  • 2025 年最新推荐软件开发机构榜:聚焦微服务架构与 724 小时服务的优质厂商精选指南人力资源管理系统/资产管理系统/数据中台管理系统/流程管理系统软件开发公司推荐
  • 最新WTAPI开发微信机器人教程说明
  • 2025 年最新制氮机厂家权威推荐排行榜:聚焦行业优质厂商综合实力,助力企业精准选购优质设备制氮机产生氮气/氮气纯化/设备改造/维修/保养/半导体用制氮机厂家推荐
  • 2025 年除湿机厂家最新权威推荐排行榜:实力厂家技术口碑评测及场景适配选购指南吊顶/泳池/车库/防爆/调温/新风除湿机厂家推荐
  • 2025 年液氨蒸发器厂家联系方式,众众电热:多领域加热设备供应与定制化解决方案提供商
  • ClickHouse 窗口函数详解:告别 GROUP BY 的局限性,实现灵活数据分析 - 若
  • Vue3 使用注意事项
  • java 解析json字符串,获取特定的字段值,JsonObject
  • Java 一行一行的读取文本,小Demo 大学问