Permutation Counting

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1330    Accepted Submission(s): 669

Problem Description
Given a permutation a1, a2, … aN of {1, 2, …, N}, we define its E-value as the amount of elements where ai > i. For example, the E-value of permutation {1, 3, 2, 4} is 1, while the E-value of {4, 3, 2, 1} is 2. You are requested to find how many permutations of {1, 2, …, N} whose E-value is exactly k.
Input
There are several test cases, and one line for each case, which contains two integers, N and k. (1 <= N <= 1000, 0 <= k <= N). 
Output
Output one line for each case. For the answer may be quite huge, you need to output the answer module 1,000,000,007.
Sample Input
  
3 0 3 1
Sample Output
  
1 4

Hint

There is only one permutation with E-value 0: {1,2,3}, and there are four permutations with E-value 1: {1,3,2}, {2,1,3}, {3,1,2}, {3,2,1}

Source
2010 Asia Regional Harbin
解题思路:给你1到n的n个数的全排列,求使得a[i]>i的数恰有k个方案的个数
令dp[i][j]表示i个数有j个a[i]>i的方案数,对于dp[i-1][j-1],最后一个数我们可以使它与a[i]<=i的任意一个数交换,共有(i-1-(j-1)) 种可能,对于dp[i-1][j],它要么直接放在最后一位,要么与a[i]>i的任意一个数交换,共有(j+1)种可能,所以
dp[i][j]=dp[i-1][j-1]*(i-j)+dp[i-1][j]*(j+1);
#include<cstdio>
#include<iostream>
using namespace std;
const int MAXN=1001;
long long dp[MAXN][MAXN];
const long long MOD=1000000007;
int main()
{int n,k;int i,j;for(i=1;i<=1000;i++){dp[i][0]=1;for(j=1;j<i;j++)dp[i][j]=(dp[i-1][j]+dp[i-1][j]*j+dp[i-1][j-1]*(i-j))%MOD;} while(scanf("%d%d",&n,&k)!=EOF)printf("%I64d\n",dp[n][k]);return 0;
}

HDU 3664 Permutation Counting相关推荐

  1. HDU 3664 Permutation Counting(DP)

    题目链接 弱爆啦,组合弱爆了,反正是没想出来怎么搞这个题,其实这个公式不难推啊,反正就是没推出来.今天队内赛,实在是没办法了,暴力写了个DFS,先把10以内的打出表来,发现类似杨辉三角的一个表,推不出 ...

  2. HDU多校10 - 6880 Permutation Counting(dp+思维)

    题目链接:点击查看 题目大意:给出一个长度为 n - 1 的 01 序列 b 用来表示排列 a 的相对大小关系,b[ i ] = 0 说明 a[ i ] < a[ i + 1 ] ,b[ i ] ...

  3. hdu 3664 1~n排列(aii ) 为k个数

    http://acm.hdu.edu.cn/showproblem.php?pid=3664 求1~n的排列个数,使得逆序数(ai>i ) 为给定的k. dp[i][j]表示前1~i的排列中,有 ...

  4. 后缀数组 --- HDU 3518 Boring counting

    Boring counting Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=3518 Mean: 给你一个字符串,求:至少出 ...

  5. HDU 4917 Permutation(拓扑排序 + 状压DP + 组合数)

    题目链接 Permutation 题目大意:给出n,和m个关系,每个关系为ai必须排在bi的前面,求符合要求的n的全排列的个数. 数据规模为n <= 40,m <= 20. 直接状压DP空 ...

  6. 【DP】【Asia - Harbin - 2010/2011】【Permutation Counting】

    [题目描述]Given a permutation a1, a2,...aN of {1, 2,..., N}, we define its E-value as the amount of elem ...

  7. 【HDU - 6184】Counting Stars(三元环计数,二分,优化暴力,O(m*sqrt(m)),图论)

    题干: Little A is an astronomy lover, and he has found that the sky was so beautiful! So he is countin ...

  8. hdu 4345 Permutation

    http://acm.hdu.edu.cn/showproblem.php?pid=4345 记忆化搜索 dp  比赛的时候没想出来呀亲 此题和 置换群有那么丁点关系 但关系不大 题目让我们求的是 实 ...

  9. HDU 1718 Rank counting sort解法

    本题是利用counting sort的思想去解题. 注意本题,好像利用直接排序,然后查找rank是会直接被判WA的.奇怪的推断系统. 由于分数值的范围是0到100,很小,而student 号码又很大, ...

最新文章

  1. CES Asia专题|微鹅展示无线充电,智能手机的无线充电时代何时来临?
  2. 根号均摊 ---- E. Xenia and Tree(树形dp + 暴力根号均摊)
  3. 浅析inline-block--使用inline-block创建布局
  4. 计算机英语四六级对调剂有影响吗,你知道四六级对于考研的影响程度吗?
  5. 英国Just Eat自动驾驶机器人的外卖系统上线
  6. python 干什么工作具有明显优势-科多大数据告诉你Python为什么这么牛?学习python有什么优势?...
  7. html怎样在标签中显示图片,HTML-图片标签学习
  8. 使用 processon 画 UML 图
  9. # 稳了github star突破9k即时通讯IM开源项目OpenIM版本发布-生产环境重点关注
  10. windows 10 安装jira进行开发管理
  11. 3套鱼塘合作引流话术模板?
  12. Windows server 2008 R2 企业版、标准版、数据中心版哪个适合
  13. oracle数据库alter的用法,数据库中alter的用法
  14. 你在项目中做过哪些安全防范措施?
  15. w ndows正常启动,正常运行WNDOWS所需的文件已被替换成无法识别的版本.要保持系统的稳定,必须还原这些文件的原有版本.doc...
  16. 科技热点周刊|马斯克套现 440 亿;苹果推出数字身份证;Meta 与微软合作;华为捐赠欧拉
  17. 【计算机网络】运输层:用户数据报协议UDP
  18. 安全邮箱是什么,163邮箱安全中心,安全邮箱怎么注册?
  19. jmeter接口测试3-正则表达式提取器的使用
  20. excel中html批量转化为pdf文件,批量将Excel转换成pdf文档的方法

热门文章

  1. 服务器系统能耗,服务器能耗怎么计算
  2. 运营商明面上的5G套餐依然昂贵,但是低至19元的套餐正在潜行
  3. 前端开发 ------------------- 十日谈
  4. cad高程测绘图lisp_AUTOLISP程序生成CAD断面图
  5. 二本计算机考研还是校招,“参加校招,还是考研?”“我选C”
  6. 作为互联网的基石之一,海底光缆“小公举”你造吗?
  7. 面试官:说说Vue响应式原理
  8. 【刷题篇】领扣3174.值为下标的倍数的元素个数(python)
  9. 关于Unity3d模型导入的材质问题
  10. ArcGIS几种数据格式(ZZ)