acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
登录
注册
题目详情提交记录(0)
  • 【正经题解】组合数问题

    首先我们来看一个有趣的东西 111 111 111 111 222 111 111 333 333 111 111 444 666 444 111 是不是很眼熟!!这就是一个杨辉三角 所以 ccc ( iii , jjj )的值就是第 iii 行第 jjj 列 预处理的时候膜? KKK 就好了 那么问题来了,预处理好杨辉三角形,还有 TTT 组询问怎么办? 我们可以用矩阵和(就是下面的 SSS 数组)给个口诀吧,上加左 减左上 加自己

    userId_undefined

    AC君

    管理员倔强青铜
    46阅读
    0回复
    1点赞
  • 题解

    #include <iostream> #include <cstdio> #include <cstring> using namespace std; int t,k,n,m; int c[2005][2005],s[2005][2005]; void prepare(); int main(){ // freopen("problem.in","r",stdin); // freopen("problem.out","w",stdout); memset(c,0,sizeof(c)); memset(s,0,sizeof(s)); cin>>t>>k; prepare(); while(t--){ cin>>n>>m; if(m>n) m=n; cout<<s[n][m]<<endl; } return 0; } void prepare(){ c[1][1]=1; for(int i=0;i<=2000;i++) c[i][0]=1; for(int i=2;i<=2000;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;i++){ for(int j=1;j<=i;j++){ s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]; if(c[i][j]==0) s[i][j]+=1; } s[i][i+1]=s[i][i]; } }

    userId_undefined

    宁

    字符串·魔法使出道萌新循环·循环打卡人倔强青铜分治·分治练习生分支·分支解题者
    0阅读
    0回复
    0点赞
  • tj

    userId_undefined

    AC是最好的

    秩序白银
    0阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页