题目链接

弱爆啦,组合弱爆了,反正是没想出来怎么搞这个题,其实这个公式不难推啊,反正就是没推出来。今天队内赛,实在是没办法了,暴力写了个DFS,先把10以内的打出表来,发现类似杨辉三角的一个表,推不出公式,只能找规律了。也推公式,也找规律,中间还走会了神,发现borad上过的人N多了,有些着急,这样应该不难吧。。。又推了会,还是没想出来,找规律吧,估摸着应该是和上两项有关系,自己写了小程序测试一下几个数据和scf讨论了下,貌似真的是找出规律了。。。然后时间不多了,好在代码很短,马上快结束了,乱写了,最后在各种乱搞+思考之下,和暴力的写的数据对上了,中间错了2次,好在在4:53的时候终于AC了。。。。

公式的意义:p[i][j] = (i-j)*p[i-1][j-1] + (j+1)*p[i-1][j];对最后一个数进行讨论,最后一个数字,如果和a[i] > i的位置交换,最后一个数一定比那个位置大,所以之前就必须有j个a[i] > i的数,所以方案数为(j+1)*p[i-1][j] +1代表最后一个数的位置,如果最后一个数和a[i] < i的位置交换共有(i-1) - (j-1)个 ,则方案数为(i-j)*p[i-1][j-1]。

 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 #define MOD 1000000007
 5 __int64 p[1001][1001];
 6 int main()
 7 {
 8     int i,j,n,k;
 9     for(i = 1;i <= 1000;i ++)
10     {
11         p[i][0] = 1;
12         p[i][i-1] = 1;
13     }
14     for(i = 3;i <= 1000;i ++)
15     {
16         for(j = 1;j <= (i+1)/2-1;j ++)
17         {
18              p[i][i-1-j] = p[i][j] = (((i-j)*p[i-1][j-1])%MOD+((j+1)*p[i-1][j])%MOD)%MOD;
19         }
20     }
21     while(scanf("%d%d",&n,&k)!=EOF)
22     {
23         printf("%I64d\n",p[n][k]);
24     }
25     return 0;
26 }

转载于:https://www.cnblogs.com/naix-x/archive/2012/10/14/2723325.html

HDU 3664 Permutation Counting(DP)相关推荐

  1. HDU 3664 Permutation Counting

    Permutation Counting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

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

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

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

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

  4. 【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 ...

  5. 【HDU - 4345 】Permutation(DP)

    BUPT2017 wintertraining(15) #8F 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了. 现在给n(<=1000),求循环周期的所有可能数. ...

  6. HDU 6446 Tree and Permutation (dp)

    题意:给出一颗树,按节点进行全排列,给你一棵树,以全排列的第一个树为根节点,求出根节点到其他点的最短路径之和,把这些和在相加,求最后结果 分析:对于每一条边都经过了 2*(n-1)!次,用dp算出这棵 ...

  7. 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的排列中,有 ...

  8. HDU 2196 Computer 树形DP经典题

    链接:http://acm.hdu.edu.cn/showproblem.php? pid=2196 题意:每一个电脑都用线连接到了还有一台电脑,连接用的线有一定的长度,最后把全部电脑连成了一棵树,问 ...

  9. HDU 2084 数塔 DP

    http://acm.hdu.edu.cn/showproblem.php?pid=2084 题目: 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走 ...

最新文章

  1. jsp空间流量是怎么计算的?
  2. C语言-人狼羊菜问题-最容易看懂的解决方法及代码
  3. gtid mysql failover_Keepalived + MySQLfailover + GTIDs 高可用
  4. 解决cookie跨域访问
  5. 文巾解题 45. 跳跃游戏 II
  6. 550什么意思_研报翻译官第二期:带你了解什么是CPI
  7. 笔记本电脑下载python视频-Python的用法笔记本
  8. 【图神经网络入门】GAT图注意力网络
  9. Adobe 成功案例之 ebay项目构建
  10. oracle数据库自动备份控制文件的目录,16.5 控制文件的自动备份和还原(1)
  11. 查看服务器虚拟机版本,查看虚拟机版本命令
  12. ffmpeg转码html5,FFMPEG转码技术在HTML5视频系统中的研究与应用
  13. 1946计算机用途,计算机在我们的工作、生活中的作用越来越大, 你知道计算机的起源于发展吗?请就计算机的发明时间(1946年)、大小、用途等...
  14. 评价神经网络性能的指标,神经网络是参数模型吗
  15. 上海升级为欧莱雅集团北亚区总部;西门子与太古可口可乐将共同打造18座数字化工厂 | 美通企业日报...
  16. d盘莫名其妙被占空间 win10_Win10系统C盘空间突然爆满的解决方法
  17. vue + elemen可远程搜索select选择器的封装(思路及源码分享)
  18. GitHub 设置和取消代理,加速 git clone
  19. Win10 20H1及以上文件误删恢复
  20. Could not initialize class JDBC.JDBCUtils 已解决

热门文章

  1. 详解Vuex常见问题、深入理解Vuex
  2. PHP中header的用法
  3. MySQL两千万数据优化迁移
  4. LoadRunner 12.02 安装教程及中文语言包安装
  5. css3中变形与动画(三)
  6. SQL SERVER 中identity
  7. select函数分析
  8. 可伸缩视频编码svc
  9. bootargs中的环境变量说明和一些常用的uboot命令
  10. Visual studio内存泄露检查工具--BoundsChecker