Description

今天西工大举办了一场比赛总共有m+n人,但是有m人比较懒没带电脑,另外的n个人带了电脑。不幸的是,今天机房的电脑全坏了只能用带的电脑,一台电脑最多两人公用,确保n>=m。但是大家来的时间不同,随机次序来机房,带电脑的人直接准备比赛而没带电脑的人需要向带电脑并还没和别人公用的人求助(当然会答应)。但是,如果不存在带电脑并还没和别人公用的人,那他就要等了,等是很让人头疼的,这就不和谐了,当然假如没有这样的情况发生比赛是很和谐的。

Input

输入多组数据,每组数据只有一行m(1<=m<=n<=20)和n(1<=n<=20);

Output

输出和谐比赛的场数。

Sample Input

1 2
3 8
4 17

Sample Output

2
110
4655
这道题可以看成是递推,也可以用组合数学来解,具体就是卡特兰数。
我们把没带电脑的看成0,带电脑的看成1,那么问题就转化成从左向右扫描0的个数不超过1的个数
假设某一位0之前0的累计数等于1的累计数,假设之前有m个1,m个0,
这个0是第2m+1位,之后有2n-m个1和2n-m-1个0,要出现0的累计数大于1的累计个数这种情形,我们可以增加0的个数,
类似于DP那种可以转化问题的思想,但是怎么转化成我们要求解的问题呢?
我们可以将2n-m个1变成0,将2n-m-1个0变成1,转化后就会出现0的累计数大于1的累计个数这种情形。
答案就是卡特兰数c(q,p+q)-c(q+1,p+q);q代表0的个数。
类似于这种转化成01形式求解的还有:
给定一个4*3的棋盘,从左下角到右上角,每次只能向右走或者向上走,有多少种方案?
我们发现要从左下角到右上角只要向右走四步,向上走三步,用1代表向上走,用0代表向右走,那么问题就转化成由4个0和3个1组成的
7位01字符串,这两种形式一一对应,答案就是c(4,7).
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <string>
#define LL long long using namespace std; int p, q;
LL f[][]; void Init()
{
memset(f, , sizeof(f));
for (int i = ; i <= ; ++i)
{
f[i][] = ;
}
for (int i = ; i <= ; ++i)
{
for (int j = ; j <= ; ++j)
if(i<j)
f[i][j]=;
else
f[i][j] = f[i-][j] + f[i][j-];
}
}
LL c[][];
void slove()
{
memset(c,,sizeof(c));
for(int i=;i<=;i++)
{
c[][i]=;
c[][i]=i;
c[i][i]=;
}
for(int i=;i<=;i++)
for(int j=;j<=;j++)
c[j][i]=c[j][i-]+c[j-][i-];
}
double C(int m,int n)
{
double answer1=,answer2=;
for(int i=n-m+;i<=n;i++)
answer1*=i;
for(int i=;i<=m;i++)
answer2*=i;
return answer1/answer2;
}
int main()
{
//freopen("test.in", "r", stdin);
slove();
while (scanf("%d%d", &p,&q) != EOF)
{
printf("%lld\n",c[q][p+q]-c[q+][p+q] );
printf("%.0lf\n",C(q,p+q)-C(q+,p+q) );
Init();
printf("%lld\n", f[q][p]);
}
return ;
}

NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)F题 和谐的比赛(递推 ||卡特兰数(转化成01字符串))的更多相关文章

  1. ACM学习历程—NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)F题 和谐的比赛(递推)

    Description 今天西工大举办了一场比赛总共有m+n人,但是有m人比较懒没带电脑,另外的n个人带了电脑.不幸的是,今天机房的电脑全坏了只能用带的电脑,一台电脑最多两人公用,确保n>=m. ...

  2. ACM学习历程—NPU1086 随机数 2015年陕西省程序设计竞赛网络预赛(正式赛)C题 (计数排序 || set容器)

    Description 开学了,ACM队的边老板想在学校中请一些妹子一起做一项问卷调查,调查妹子们对ACM的了解情况,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100), ...

  3. ACM学习历程—NPU1045 2015年陕西省程序设计竞赛网络预赛(热身赛)C题 Graph Theory(递推 && 组合数学 && 大数)

    Description In graph theory, a matching or independent edge set in a graph G = (V , E) is a set of e ...

  4. 2016中国大学生程序设计竞赛 - 网络选拔赛 C. Magic boy Bi Luo with his excited tree

    Magic boy Bi Luo with his excited tree Problem Description Bi Luo is a magic boy, he also has a migi ...

  5. 2018中国大学生程序设计竞赛 - 网络选拔赛 1001 - Buy and Resell 【优先队列维护最小堆+贪心】

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6438 Buy and Resell Time Limit: 2000/1000 MS (Java/O ...

  6. 2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ's Salesman 【离散化+树状数组维护区间最大值】

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/O ...

  7. 2018中国大学生程序设计竞赛 - 网络选拔赛 1009 - Tree and Permutation 【dfs+树上两点距离和】

    Tree and Permutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  8. HDU 6154 - CaoHaha's staff | 2017 中国大学生程序设计竞赛 - 网络选拔赛

    /* HDU 6154 - CaoHaha's staff [ 构造,贪心 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 整点图,每条线只能连每个方格的边或者对角线 问面积大于n的 ...

  9. HDU 6150 - Vertex Cover | 2017 中国大学生程序设计竞赛 - 网络选拔赛

    思路来自 ICPCCamp /* HDU 6150 - Vertex Cover [ 构造 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 给了你一个贪心法找最小覆盖的算法,构造一组 ...

随机推荐

  1. UVA 861 组合数学 递推

    题目链接 https://vjudge.net/problem/UVA-861 题意: 一个国际象棋棋盘,‘象’会攻击自己所在位置对角线上的棋子.问n*n的棋盘 摆放k个互相不攻击的 '象' 有多少种 ...

  2. P1455 搭配购买

    洛谷——P1455 搭配购买 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商 ...

  3. Spring中使用构造函数实现Beans自动装配

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/beans-auto-wiring/spring-autowiring-by-Constructor ...

  4. CSS3 水波纹

    css3 动画设置水波纹,效果如下图: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  5. java中可以通过调用ping命令来判断网络是否连接正常

    原文:http://www.open-open.com/code/view/1446382328960 import java.io.BufferedReader; import java.io.IO ...

  6. Hexo搭建个人blog

    Hexo搭建 现在只想说心累... 前几天看了几个牛人的blog,感觉他们的风格很舒服,然后就发现了Hexo这个好东西!激动的想马上自己也弄一个,昨天晚上开始看资料特别是:潘柏信写了两篇 HEXO搭建 ...

  7. centos mysql错误信息处理

    mysql_secure_installation 提示错误:Enter current password for root (enter for none):ERROR 1045 (28000): ...

  8. 磁盘显示为GPT(保护分区)

    问题描述:PE进入系统,在计算机管理里面磁盘显示为GPT(保护分区).此时硬盘是不能重新分区或者格式化的. 解决思路:低版本的WIndows(PE)是不支持GPT分区的,我们需要使用系统自带的Disk ...

  9. jason数据格式 -- 扫盲

    JSON是 JavaScript Object Notation的简称,是一种轻量的数据表示方法.jason格式採用key:value的方式记录数据,非常直观,比XML简洁,因而大受欢迎 介绍jaso ...

  10. powershell 通过SMTP发送邮件

    一直以来就用.net的方式发送邮件.由于powershell自带的方式用起来easy出错.且比較简单,近期看到一些人也反应使用中遇到麻烦. #定义函数 function sendmail($maila ...