UVa 12034 Race (递推+组合数学)
2024-08-29 01:17:16
题意:A,B两个人比赛,名次有三种情况(并列第一,AB,BA)。输入n,求n个人比赛时最后名次的可能数。
析:本来以为是数学题,排列组合,后来怎么想也不对。原来这是一个递推。。。
设n个人时答案为f(n)假设第一名有i(0< i <= n)个人,也就是有C(n, i)种,还剩下f(n-i)种可能,然后就so easy了。
f(n) = ΣC(n, i)f(n-i)。
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#define mod %10056 using namespace std;
const int maxn = 1001;
int c[maxn+5][maxn+5], f[maxn+5]; void init(){
for(int i = 0; i < maxn; i++)
c[i][i] = 1, c[i][0] = 1;
for(int i = 1; i < 1001; i++)
for(int j = 1; j <= i; j++)
c[i][j] = (c[i-1][j-1] + c[i-1][j]) mod; } void solve(){
f[0] = 1, f[1] = 1, f[2] = 3;
for(int i = 3; i < 1001; i++)
for(int j = 1; j <= i; j++){
int k = (c[i][j]*f[i-j]) mod;
f[i] = (k+f[i]) mod;
}
} int main(){
memset(c, 0, sizeof(c));
memset(f, 0, sizeof(f));
init();
solve();
int n, T, cases = 0; cin >> T;
while(T--){
scanf("%d", &n);
printf("Case %d: %d\n", ++cases, f[n]);
}
return 0;
}
最新文章
- 锐捷linux客户端常用命令(主要用来连接校园网或公司局域网)
- sematext
- xcode6 自定义UITabbarController
- ☀【SeaJS】SeaJS Grunt构建
- 九、C# 合式类型
- Visual Studio中的lib的链接顺序
- python 字符串探讨
- ubuntu下百度云安装
- poj 1142 Smith Numbers
- 【原创】大叔问题定位分享(10)提交spark任务偶尔报错 org.apache.spark.SparkException: A master URL must be set in your configuration
- SXWIN7X64EN_20181104_NET_msu_LITE英文精简版
- Java入门系列(十二)Java反射
- Bootstrap3基础 input-group glyphicon 输入框组与glyphicon图标
- [转载]哪个版本的gcc才支持c11
- 【WP8】键盘弹出时控制Frame位置
- springboot集成shiro 前后端分离
- Docker应用三:Dockerfile使用介绍(以安装redis为例)
- CodeVS4416 FFF 团卧底的后宫
- Android 面试题集 包含答案
- C# 基础知识 (四).C#简单介绍及托管代码
热门文章
- 如何在Oracle中建立表和表空间?
- Docker之My sql 之旅
- (转)游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)
- 在hadoop运行tensor flow
- javascript中的二维数组
- 如何搭建hibernate框架
- PHP的zip、unzip类详解
- [leetcode]689. Maximum Sum of 3 Non-Overlapping Subarrays三个非重叠子数组的最大和
- SVN版本冲突中 Files 的值“ <; <; <; <; <; <; <; .mine”无效路径中具有非法字符的解决办法
- Phalcon Framework的MVC结构及启动流程分析