HDU 4489 (DP递推计数)
来源:互联网 发布:银行家算法实验分析 编辑:程序博客网 时间:2024/06/07 05:04
DP 递推计数
题意:
这是一道比较神奇的题,很考验思维:有n个高低不同的人,现在需要进行排列,排列一定要满足两种方式
高低高···
低高低···
求出有多少排列方式。
思路:
我们的切入点是第i个人,如果前i-1个人都已经排列好了,那么第i个人只需插入就行,因为任何人排列先后顺序不影响总的结果,我们就认为插入的人高度递增的,那么第i个人的高度是最高的,把他放在两端的情况有
种,重点是中间的插入情况,第i人放在中间的情况仔细分析之后有一个条件是必须要满足的那就是第i人左边的1~i-1人的排列一定是 ···高低第i人,右边的排列一定是 第i人低高··· ,因为第i人是最高的那么左右的两个人都是低谷,。加入一共有i-1人,第i人现在要插入其左边有j个人,满足上边条件的情况有dp[i−1] ,,右边有i-1-j个人,满足上述条件的人有dp[j−1]>>1 (因为开始或者结尾时低的人的情况各占总数的一半) 。那么dp[i−1−j]>>1 ,其中dp[i]+=(dp[j]>>1)∗(dp[i−1−j]>>1)∗C(j,i−1) 意思是从i-1人中选拔出j人在第i人左边的种类数。C(j,i−1)
- 注意点:当第i人左边或者右边只有一个人的情况,只需除以依次2即可。
#include <iostream>#include <cstdio>#include <math.h>using namespace std;typedef long long LL;const int maxn = 30;int n;LL dp[maxn];LL C(int m,int n){ LL ans = 1; int t = m; while(t) { ans *= n; n--; t--; if(ans%m == 0 && m != 0) { ans /= m; m--; } } while(m) { ans /= m; m--; } return ans;}void init(){ dp[1] = 1; dp[2] = 2; dp[3] = 4; for(int i = 4;i <= 20; i++) { dp[i] += dp[i-1]; // printf("%d\n",i); for(int j = 1;j < i - 1; j++) { if(j == 1 || i - j - 1 == 1) dp[i] += (dp[j]*dp[i-j-1]>>1)*C(j,i-1); else dp[i] += (dp[j]>>1)*(dp[i-j-1]>>1)*C(j,i-1); } }}int main(){ //freopen("in.txt","r",stdin); init(); int tt; scanf("%d",&tt); for(int i = 1;i <= tt; i++) { int ncase; scanf("%d%d",&ncase,&n); printf("%d %I64d\n",ncase,dp[n]); } return 0;}
阅读全文
0 0
- HDU 4489 (DP递推计数)
- DP 递推j计数
- 递推、计数类Dp专题
- 递推计数-hdu-4747-Mex
- hdu 4747 Mex 递推计数
- codeforces 212 C DP 递推 计数 破环
- zoj 3747 Attack on Titans 递推 计数dp
- hdu 5136(dp计数)
- HDU - 5136(计数dp)
- HDU 5401(计数dp)
- HDU - 5116(计数dp)
- hdu 5800 计数dp
- HDU 6078 (计数DP)
- HDU 1421 DP计数
- HDU yt13递推1008钥匙计数之一
- HDU 5729 Rigid Frameworks(组合计数,递推)
- hdu 4472 Count DP 递推
- hdu 一卡通大冒险 递推 或是 dp
- windows下MongoDB的安装及配置
- 数组中的逆序对
- thinkphp 完整配置config.php
- 栈和递归---解决迷宫问题
- 进程同步实例--消费和生产问题
- HDU 4489 (DP递推计数)
- Linux sshd 相关服务
- HDOJ A + B Problem II 大数的加法
- 方法的重载,调用,构造器,我对它们的理解!
- ionic2中实现上拉菜单并且修改默认样式也就是自定义样式。ActionSheets。以更换/上传头像为例.
- 【Nova】nova-network网络模型之flatdhcp网络-代码学习1
- Banner+ExpandableListView
- 在线破解hash的优秀网站
- 装饰者模式,静态代理,动态代理