P2822 [NOIP2016 提高组] 组合数问题
本题考察了组合数的递推以及矩阵前缀和。我们可以得出:
这其实也是一个杨辉三角。
如何解决数据范围极大的问题?使用矩阵前缀和即可。见代码:
#include<bits/stdc++.h>
using namespace std;
int s[2005][2005],c[2005][2005],t,k,n,m;
signed main(){
scanf("%d%d",&t,&k);
c[1][1]=1;
for(int i=0;i<=2000;c[i][0]=1,i++)
for(int j=1;j<=i;j++)
c[i][j]=(c[i-1][j]+c[i-1][j-1])%k;
for(int i=2;i<=2000;s[i][i+1]=s[i][i],i++)
for(int j=1;j<=i;j++)
s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+!(c[i][j]);
while(t--){
scanf("%d%d",&n,&m);
if(m>n) m=n;
if(m==0) puts("1");
printf("%d\n",s[n][m]);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律