HDU 2583 permutation
来源:互联网 发布:数据字典的功能 编辑:程序博客网 时间:2024/05/22 01:36
原题链接
题意大概就是求n的全排列中,用大于小于号连接,其中小于号有k个的情况有多少种。注意,ac代码是%2009,不是2007
显然n的全排列有n!个,考虑下dp算法
状态转移是DP(n,k)=dp(n-1,k)*(k+1)+dp(n-1)(k-1)*(n-k)
n代表考虑n个数字的状态,k代表小于号的个数。
先作特殊情况,序列1 2 3 4 5 6,一共5个小于号,如果我要加入数字7,那么我有7种加法,并且只有一种加法会使小于号+1.
序列a1 a2 a3 a4 a5 ……a(n-1),一共有n-1个数字,有k个小于号,那么我加入an有n种加法,其中会使小于号+1的有n-k种(就是加在大于号的位置上),其他的k+1种不会改变小于号的个数。
#include<stdio.h>#include<stdlib.h>#include<string>#include<algorithm>#include<math.h>#include<iostream>using namespace std;#define LL long long#define INF 99999999int dp[111][111];main(){ int n,k,i,j; for(i=0;i<=100;i++) { dp[i][0]=1; dp[0][i]=0; } for(i=1;i<=100;i++) for(j=1;j<=100;j++) dp[i][j]=dp[i-1][j]*(j+1)+dp[i-1][j-1]*(i-j),dp[i][j]=dp[i][j]%2009; while(scanf("%d %d",&n,&k)!=EOF) printf("%d\n",dp[n][k]);}
0 0
- HDU 2583 permutation
- hdu-2583 permutation
- HDU 2583 permutation
- hdu 2583 permutation 好题 递推
- hdu 4345 Permutation
- Hdu 4345 Permutation
- hdu 2404 Permutation Recovery
- HDU 4917 Permutation
- HDU 3664 Permutation Counting
- HDU 4345 Permutation dp
- HDU 3667 Permutation Counting
- hdu 5753 Permutation Bo
- HDU 5753 Permutation Bo
- HDU-5753-Permutation Bo
- HDU 5753 Permutation Bo
- 【HDU】5753 Permutation Bo
- HDU 5789 Permutation
- 【HDU】5789 Permutation【dp】
- 管理看板-展现面板页面隐藏组件
- Ruby中相等性判断主要方法说明
- linux lsof命令详解
- 【Visual C++】游戏开发笔记之十 基础动画显示(三) 透明动画的实现
- 【Java】使用synchronized和Lock对象获取对象锁
- HDU 2583 permutation
- LRU Cache(LeetCode)
- HDOJ 2503 a/b + c/d
- Can't locate CPAN.pm in @INC (@INC contains: inc /usr/local/lib64/perl5 /usr....
- 【Visual C++】游戏开发笔记之十一 基础动画显示(四) 排序贴图
- Android最佳实践性能(一)管理您的应用程序的内存
- Kvm 深入学习
- CentOS 下GIT软软件的安装
- Tomcat的获取和安装