NOIP2016 day2T1 组合数问题
来源:互联网 发布:macbook air破解软件 编辑:程序博客网 时间:2024/06/06 07:01
在考场的时候,并不知道组合数和杨辉三角形一一对应
出考场,知道一一对应之后,一遍就A了,,,
-组合数和杨辉三角形一一对应
-可以暴力出2000以内所有组合数,然后加上前缀和,这样就可以过了
-如果想要更快,可以边读入边暴力,就像我这样,但是写起来会比较麻烦
-看大佬写的代码,原来可以先读入所有的m,n取其中的最大值,然后直接暴力到最大值那里,这样写起来很方便
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;int read(){ int f=1,p=0; char c=getchar(); while(c>'9'||c<'0') { if(c=='-')f=-1; c=getchar(); } while(c>='0'&&c<='9') { p=p*10+c-'0'; c=getchar(); } return f*p;}int t,k=4,m,n,nn=1;int c[2010][2010];int f[2010][2010];void work(int n){ for(int i=nn+1;i<=n;i++) for(int j=0;j<=i;j++) { if(!j||j==i){c[i][j]=1;continue;} c[i][j]=(c[i-1][j-1]+c[i-1][j])%k; } for(int i=nn+1;i<=n;i++) for(int j=0;j<=2000;j++) { if(!c[i][j])f[i][j]=1; f[i][j]+=(f[i-1][j]+f[i][j-1]-f[i-1][j-1]); }}int main(){ t=read(),k=read(); memset(c,0x7f,sizeof(c)); c[1][0]=1,c[1][1]=1; while(t) { n=read(),m=read(); if(n>nn){work(n);nn=n;} printf("%d\n",f[n][m]); t--; } return 0;}
0 0
- NOIP2016 Day2T1 组合数问题
- NOIP2016 day2T1 组合数问题
- NOIP2016 Day2T1 组合数(90分)
- [NOIP2016] 组合数问题
- NOIP2016组合数问题
- noip2016组合数问题
- NOIP2016组合数问题
- [NOIP2016]组合数问题
- 组合数问题(NOIP2016)
- NOIP2016 组合数问题
- Noip2016 组合数问题
- noip2016组合数问题
- NOIP2016 T4 组合数问题
- [noip2016]组合数问题 题解
- noip2016组合数问题 组合+前缀和
- 【NOIP2016】洛谷2282 组合数问题
- 【NOIP2016】D2 T1 组合数问题
- Loi Online Judge【NOIP2016】组合数问题
- 刷题总结#2
- 使用atom编辑markdown并导出pdf
- 关于app冷启动白屏
- matlab连接Navicat出现的账户或密码错误问题 重设密码
- MySQL:定义一个小型的数据库
- NOIP2016 day2T1 组合数问题
- 整数的划分—动态规划
- Leetocde : Rotate List
- C++继承关系
- kali linux安装软件包
- java中int和Integer的==比较和拆箱装箱
- HTTP Status 500
- #define is unsafe hdu3350
- 散列表的基本原理与实现