P1655 小朋友的球

题目描述

@发源于 小朋友最近特别喜欢球。有一天他脑子抽了,从口袋里拿出了N个不同的球,想把它们放到M个相同的盒子里,并且要求每个盒子中至少要有一个球,他好奇有几种放法,于是尝试编程实现,但由于他天天不好好学习,只会上B站看游泳教练,于是他向你求助。

输入输出格式

输入格式:

多组数据,每行两个数N,M。

输出格式:

每组数据一行,表示方案数。

输入输出样例

输入样例#1:

4 2
1 1
输出样例#1:

7
1

说明

【样例解释】

N=4,M=2

1,2 3 4

2,1 3 4

3,1 2 4

4,1 2 3

1 2,3 4

1 3,2 4

1 4,2 3

对于20%的数据,满足1≤N,M≤10;

对于100%的数据,满足1≤N,M≤100,数据组数≤10。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,f[][];
int stirling(int a,int b){
if(f[a][b]!=-)return f[a][b];
if(b==)return f[a][b]=;
if(a==b)return f[a][b]=;
if(a==)return f[a][b]=;
return f[a][b]=b*stirling(a-,b)+stirling(a-,b-);
}
int main(){
memset(f,-,sizeof(f));
while(scanf("%d%d",&n,&m)!=EOF){
printf("%d\n",stirling(n,m));
}
}

20分 不加高精

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[],b[],c[];
int n,m;
struct node{
int len,zu[];
node operator + (const node x)const{
memset(a,,sizeof(a));
memset(b,,sizeof(b));
memset(c,,sizeof(c));
for(int i=,j=len;i<=len;i++,j--)a[i]=zu[j];
for(int i=,j=x.len;i<=x.len;i++,j--)b[i]=x.zu[j];
int l=max(len,x.len);
for(int i=;i<=l;i++){
c[i]+=a[i]+b[i];
c[i+]+=c[i]/;
c[i]=c[i]%;
}
while(c[l+]){
l++;
c[l+]+=c[l]/;
c[l]%=;
}
node res;
res.len=l;
for(int i=,j=l;i<=l;i++,j--)res.zu[i]=c[j];
return res;
}
node operator * (const int x)const{
memset(a,,sizeof(a));
memset(b,,sizeof(b));
for(int i=,j=len;i<=len;i++,j--)a[i]=zu[j];
int l=len;
for(int i=;i<=l;i++){
b[i]+=a[i]*x;
b[i+]+=b[i]/;
b[i]%=;
}
while(b[l+]){
l++;
b[l+]+=b[l]/;
b[l]=b[l]%;
}
node res;
res.len=l;
for(int i=,j=l;i<=l;i++,j--)res.zu[i]=b[j];
return res;
}
}f[][];
node stirling(int x,int y){
if(f[x][y].len!=)return f[x][y];
if(x==||y==){
f[x][y].len=;
f[x][y].zu[]=;
return f[x][y];
}
if(x==y){
f[x][y].len=;
f[x][y].zu[]=;
return f[x][y];
}
f[x][y]=stirling(x-,y)*y+stirling(x-,y-);
return f[x][y];
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
node ans=stirling(n,m);
for(int i=;i<=ans.len;i++)printf("%d",ans.zu[i]);
printf("\n");
}
}

100分 加高精

洛谷P1655 小朋友的球(Stirling数)的更多相关文章

  1. 洛谷——P1655 小朋友的球

    P1655 小朋友的球 题目描述 @发源于 小朋友最近特别喜欢球.有一天他脑子抽了,从口袋里拿出了N个不同的球,想把它们放到M个相同的盒子里,并且要求每个盒子中至少要有一个球,他好奇有几种放法,于是尝 ...

  2. 洛谷 P1655 小朋友的球

    题目描述 @发源于 小朋友最近特别喜欢球.有一天他脑子抽了,从口袋里拿出了N个不同的球,想把它们放到M个相同的盒子里,并且要求每个盒子中至少要有一个球,他好奇有几种放法,于是尝试编程实现,但由于他天天 ...

  3. P1655 小朋友的球

    P1655 小朋友的球 题目描述 @发源于 小朋友最近特别喜欢球.有一天他脑子抽了,从口袋里拿出了N个不同的球,想把它们放到M个相同的盒子里,并且要求每个盒子中至少要有一个球,他好奇有几种放法,于是尝 ...

  4. 洛谷——P1287 盒子与球

    P1287 盒子与球 题目描述 现有r个互不相同的盒子和n个互不相同的球,要将这n个球放入r个盒子中,且不允许有空盒子.问有多少种方法? 例如:有2个不同的盒子(分别编为1号和2号)和3个不同的球(分 ...

  5. 洛谷【P1004】方格取数

    浅谈\(DP\):https://www.cnblogs.com/AKMer/p/10437525.html 题目传送门:https://www.luogu.org/problemnew/show/P ...

  6. 洛谷 P1287 盒子与球

    P1287 盒子与球 题目描述 现有r个互不相同的盒子和n个互不相同的球,要将这n个球放入r个盒子中,且不允许有空盒子.问有多少种方法? 例如:有2个不同的盒子(分别编为1号和2号)和3个不同的球(分 ...

  7. 洛谷P1982 小朋友的数字——题解

    题目传送 简单地说,这题就是让我们求前i个数的最大子串和和最值. 对于最大子串和,我们可以设一个变量qian,表示以当前元素结尾的最大子串的子串和.若搜索完第i-1个小朋友,现在看到第i个小朋友时,若 ...

  8. 洛谷 P1066 2^k进制数

    P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. ( ...

  9. 洛谷P1066 2^k进制数(题解)(递推版)

    https://www.luogu.org/problemnew/show/P1066(题目传送) (题解)https://www.luogu.org/problemnew/solution/P106 ...

随机推荐

  1. vue 组件与传值

    一.表单输入绑定(v-model 指令) 可以用 v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定. ...

  2. 大数据- 自定义Log4j日记

    1.新建一个java project,在src下新建一个lib文件夹和 rescources 文件夹,resources文件夹不能命名错误. 点击File——>project Structure ...

  3. BZOJ 1657 [Usaco2006 Mar]Mooo 奶牛的歌声:单调栈【高度序列】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1657 题意: Farmer John的N(1<=N<=50,000)头奶牛整齐 ...

  4. sqlite:多线程操作数据库“database is locked”解决方法

    1. 使sqlite支持多线程(不确定是否非加不可,暂且加上,以备后患) 可以在编译时/启动时/运行时选择线程模式,参考:http://www.cnblogs.com/liaj/p/4015219.h ...

  5. 2015 年最热门的国人开发开源软件 TOP 50

    开源中国在 2015 年得到了快速的发展,单开源软件收藏量就接近 40000 款,其中不乏优质的国产开源项目.本文从软件的收藏.下载.访问等多角度挑选出了 2015 年最热门的国产开源软件前五十名,让 ...

  6. Java_正则_00_资源贴

    二.参考资料 1.揭开正则表达式的神秘面纱

  7. listen 63

    Danger Explainers Convince Kids Better Than Do Edict Issuers An eight-year-old may view a hammer as ...

  8. ACM学习历程——HDU4472 Count(数学递推) (12年长春区域赛)

    Description Prof. Tigris is the head of an archaeological team who is currently in charge of an exca ...

  9. COGS 2581 无聊的会议V2

    传送 题目大意 给定一个长为\(n\)的序列,定义\(y\)在三元对\((x,y,z)\)中成为中心轴当且仅当同时满足:\(a_x = a_y = a_z,y-x=z-y,x<y<z\)对 ...

  10. Trie 树内存消耗问题

    大家都知道,Trie树(又称字典树)是一种树型数据结构,用于保存大量的字符串.它的优点是:利用字符串的公共前缀来节约存储空间. 相对来说,Trie树是一种比较简单的数据结构,比较易于理解.话说上帝是公 ...