BNUOJ 51280 组队活动(dp + 计数)
2016-02-12 01:19
417 查看
题意:
给定编号为1∼N的N个人,至多M个人组成一队,M≤N≤1000,问组队方案数
两个组队方案被视为不同的,当且仅当存在至少一名队员在两种方案中有不同的队友
分析:
f[i]:=i个人的组队方案数(因为人是不同的)
f[0]=1,f[i]=∑j=0m−1Cji−1⋅f[i−1−j]
对于新添加进来的这个1个人,从前i−1个人中选出j个与他组队,方法数为Cji−1
剩余i−1−j个人的方法数为f[i−1−j],根据乘法原理每个j的贡献为Cji−1⋅f[i−1−j]
枚举j∈[0,m−1],加和到f[i]上
ans=f[n],时间复杂度为O(nm)
大数据要cdq分治ntt,贴个链接: 地址
代码:
给定编号为1∼N的N个人,至多M个人组成一队,M≤N≤1000,问组队方案数
两个组队方案被视为不同的,当且仅当存在至少一名队员在两种方案中有不同的队友
分析:
f[i]:=i个人的组队方案数(因为人是不同的)
f[0]=1,f[i]=∑j=0m−1Cji−1⋅f[i−1−j]
对于新添加进来的这个1个人,从前i−1个人中选出j个与他组队,方法数为Cji−1
剩余i−1−j个人的方法数为f[i−1−j],根据乘法原理每个j的贡献为Cji−1⋅f[i−1−j]
枚举j∈[0,m−1],加和到f[i]上
ans=f[n],时间复杂度为O(nm)
大数据要cdq分治ntt,贴个链接: 地址
代码:
// // Created by TaoSama on 2016-02-12 // Copyright (c) 2016 TaoSama. All rights reserved. // #pragma comment(linker, "/STACK:1024000000,1024000000") #include <algorithm> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iomanip> #include <iostream> #include <map> #include <queue> #include <string> #include <set> #include <vector> using namespace std; #define pr(x) cout << #x << " = " << x << " " #define prln(x) cout << #x << " = " << x << endl const int N = 1e3 + 10, INF = 0x3f3f3f3f, MOD = 998244353; int n, m; long long c , f ; int main() { #ifdef LOCAL freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin); // freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout); #endif ios_base::sync_with_stdio(0); for(int i = 0; i <= 1000; ++i) { c[i][0] = c[i][i] = 1; for(int j = 1; j < i; ++j) c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % MOD; } int t; scanf("%d", &t); while(t--) { scanf("%d%d", &n, &m); f[0] = 1; for(int i = 1; i <= n; ++i) { f[i] = 0; for(int j = 0; j <= min(i - 1, m - 1); ++j) { f[i] += c[i - 1][j] * f[i - 1 - j] % MOD; f[i] %= MOD; } } printf("%lld\n", f ); } return 0; }
相关文章推荐
- 最省空间的计数器
- jsp计数器-jsp文件
- 改进的IP计数器
- php的计数器程序
- 综合图片计数器
- jsp计数器制作手册
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- ThinkPHP进程计数类Process用法实例详解
- LFC1.0.0 版本发布
- GridView导出Excel格式问题(科学计数法)
- Android px、dp、sp之间相互转换
- HP data protector软件学习1--基本角色与基本工作流程
- HP data protector软件学习2--软件组成与界面介绍
- android中像素单位dp、px、pt、sp的比较
- Android对px和dip进行尺寸转换的方法
- Android根据分辨率进行单位转换-(dp,sp转像素px)
- android 尺寸 dp,sp,px,dip,pt详解
- DP问题各种模型的状态转移方程
- POJ-1695-Magazine Delivery-dp