admin 管理员组文章数量: 887021
运动会
运动会(group)
【问题描述】
在一次运会上,有一个比赛项目,共有 N 个人参加比赛,要将这 N 个人分组,每组人
数不少于 K 个,问有多少种分组方式?
比如有 16 个运动员,每组人数不少于 5 个,共有 6 种分组方式:
(1) 分一组,为 16 人;
(2) 分二组,分别为 11 人、5 人;
(3) 分二组,分别为 10 人、6 人;
(4) 分二组,分别为 9 人、7 人;
(5) 分二组,分别为 8 人、8 人;
(6) 分三组,分别为 6 人、5 人、5 人。
注意:6+5+5,5+6+5,5+5+6 为同一种,只算一种分组方式;
【输入文件】
输入文件 group.in 共一行为两个整数 N, K。表示有 N 个运动员分组,每组不少于 K 个
人(1 ≤ K ≤ N ≤ 500)。
【输出文件】
输出文件 group.out 共一行为一个整数,表示分组数。
结果可能很大,输出结果除以 10000007 的余数。
【输入】
16 5
【输出】
6
记忆化搜索 。。。
#include <cstdio> #include <iostream> using namespace std; #define R register #define ll long long ll n,k; ll f[505][505]; inline ll dfs(ll yu,ll last) {if(f[yu][last]) return f[yu][last];ll sum=1;for(R ll i=last;i<=n;i++) {if(yu>=2*i) sum+=dfs(yu-i,i),sum%=10000007;}sum%=10000007;return f[yu][last]=sum; } int main() {freopen("group.in","r",stdin);freopen("group.out","w",stdout);cin>>n>>k;cout<<dfs(n,k)<<endl;return 0; }
好短....
转载于:.html
本文标签: 运动会
版权声明:本文标题:运动会 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687782279h140784.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论