有N个高矮不同的人,求高矮高矮高矮高矮......或者矮高矮高矮高......的排列方法一共有多少种。

假设第N个插入到队伍中的人比前N-1个人都要高,假设他插入的位置为 j ,那么j-1要比j-2矮,j+1要比j+2矮

即 j-2   j-1  j   j+1  j+2 是高矮高矮高

所以先选前j-1个人,排列组合C(n-1,j-1)。

dp[i][0]表示插入位置之前的人的排列种数

dp[i][1]表示插入位置之后的人的排列种数

sum[i]为i个人排列满足要求的排列种数

dp[i][0]=dp[i][1]=sum[i]/2

对于第n个人放到位置j ,有C(n-1,j-1)*dp[j-1][0]*dp[n-j][1]种情况。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll dp[50][50];
ll sum[50];
ll jiecheng(ll a)
{ll ans=1;while(a!=0){ans*=a;a--;}return ans;
}
ll cal(ll a,ll b)
{   return jiecheng(a)/jiecheng(a-b)/jiecheng(b);
}int main()
{memset(dp,sizeof(dp),0);memset(sum,sizeof(sum),0);dp[0][0]=dp[0][1]=1;dp[1][0]=dp[1][1]=1;sum[1]=1;for(int i=2;i<21;i++){sum[i]=0;for(int j=1;j<=i;j++){sum[i]+=(dp[j-1][0]*dp[i-j][1]*cal(i-1,j-1));} dp[i][0]=dp[i][1]=sum[i]/2;}int n, a,b;cin>>n;while(n--){scanf("%d%d",&a,&b);  cout<<a<<" "<<sum[b]<<endl; } return 0;
}

hdu 4489(排列组合+DP)相关推荐

  1. HDU - 4489 The King’s Ups and Downs (排列组合+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4489点击打开链接 The King's Ups and Downs Time Limit: 2000/ ...

  2. HDU 4832 Chess 排列组合 DP

    Chess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. hdu 1521 排列组合 多重集排列 + 指数生成函数

    传送门 文章目录 题意: 思路: 题意: 思路: 显然是多重集排列数,我们考虑构造指数生成函数,让后模拟一下多项式乘法即可啦. 由于存在分数,所以直接用doubledoubledouble即可. // ...

  4. The King’s Ups and Downs HDU - 4489(计数+dp)

    题意 给你一个n问你对这n个人排列使得是波浪型的方案数有多少 题解 我们定义这n个人是1,2,3......n的从小到大的排列方式,当遍历到第i个人时,我们要将这个人插入到前面的i-1个人中,那么我们 ...

  5. Tyler and Strings(树状数组/排列组合/dp)

    题目 题意:给定两个数组s,ts,ts,t,现重排列数组sss,使得数组sss小于ttt.问有多少种排列方式. 参考 代码源自cwxzh #include<bits/stdc++.h> u ...

  6. HDU 4489 The King’s Ups and Downs 组合DP

    The King's Ups and Downs HDU - 4489 给一个整数 nnn,求 {1,⋯,n}\{1,\cdots,n\}{1,⋯,n} 符合以下条件的的排列数: 设 a1,⋯,ana ...

  7. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)...

    题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...

  8. bzoj 3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛——前缀和优化dp / 排列组合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 好简单呀.而且是自己想出来的. dp[ i ]表示最后一个牡牛在 i 的方案数. 当前 ...

  9. 走方格跳格子(dp,递归,排列组合三种方法)

    走方格: 给定一个 n×mn×m 的方格阵,沿着方格的边线走,从左上角 (0,0)(0,0) 开始,每次只能往右或者往下走一个单位距离,问走到右下角 (n,m)(n,m) 一共有多少种不同的走法. 输 ...

最新文章

  1. 引进博士:118万安家房补+18万经费;硕士:42万安家房补+10万经费
  2. java代码实现购物车小程序_使用Taro实现小程序商城的购物车功能模块的实例代码...
  3. 机器学习模型,能分清川菜和湘菜吗?
  4. ns3 入门案例2:third.cc
  5. Makefile.am、Makefile.in、Makefile、configure.ac关系(十二)
  6. python 字典 列表 元祖_Python基础之列表、元祖、字典、集合,你都知道吗?附视频...
  7. python 自动交易股票_Python从零开始学股票自动交易视频教程百度网盘下载
  8. html调用js函数取随机返回数值并自动显示在html页面
  9. 以图搜图 图像匹配_基于内容的图像检索(CBIR) ——以图搜图
  10. c9大学计算机系好的大学,C9顶尖高校所有自主招生专业大汇总
  11. Android新手入门,怎样才是正确的学习方式
  12. 放大电路不同频段耦合电容、旁路电容、极间电容和分布电容的分析方法
  13. 什么样的企业可以称之为初创企业?
  14. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'user' 附近有语法错误
  15. 初看SOA:SOA是什么?
  16. 【Plant Biotech. J.】MdBBX22–miR858– MdMYB9/11/12模块调节苹果皮中原花青素的生物合成
  17. Altium designer18系列教程一 建工程和封装介绍
  18. 在Docker中运行EOS(MAC版)
  19. 【Spring Boot】 过滤器、监听器、拦截器的使用
  20. KaLi Linux下使用OpenSSL文件加解密操作

热门文章

  1. Creator星球教程文章分类导航
  2. 微信小程序--红色星球
  3. Java深入浅出讲解
  4. python应用内部审计_基于大数据技术提升内部审计质量的路径
  5. 车架号 生成 java_车辆识别码VIN校验位计算方法及实现  VIN号检验、车架号检验 java、 C++...
  6. 初始化失败_Destroying singletons
  7. Java 项目的命名规范
  8. flutter微信分享,qq分享
  9. C++多线程--std::packaged_task
  10. C++的std::packaged_task