HDU 3664 Permutation Counting(DP)
题目链接
弱爆啦,组合弱爆了,反正是没想出来怎么搞这个题,其实这个公式不难推啊,反正就是没推出来。今天队内赛,实在是没办法了,暴力写了个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)相关推荐
- HDU 3664 Permutation Counting
Permutation Counting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU多校10 - 6880 Permutation Counting(dp+思维)
题目链接:点击查看 题目大意:给出一个长度为 n - 1 的 01 序列 b 用来表示排列 a 的相对大小关系,b[ i ] = 0 说明 a[ i ] < a[ i + 1 ] ,b[ i ] ...
- HDU 4917 Permutation(拓扑排序 + 状压DP + 组合数)
题目链接 Permutation 题目大意:给出n,和m个关系,每个关系为ai必须排在bi的前面,求符合要求的n的全排列的个数. 数据规模为n <= 40,m <= 20. 直接状压DP空 ...
- 【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 ...
- 【HDU - 4345 】Permutation(DP)
BUPT2017 wintertraining(15) #8F 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了. 现在给n(<=1000),求循环周期的所有可能数. ...
- HDU 6446 Tree and Permutation (dp)
题意:给出一颗树,按节点进行全排列,给你一棵树,以全排列的第一个树为根节点,求出根节点到其他点的最短路径之和,把这些和在相加,求最后结果 分析:对于每一条边都经过了 2*(n-1)!次,用dp算出这棵 ...
- 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的排列中,有 ...
- HDU 2196 Computer 树形DP经典题
链接:http://acm.hdu.edu.cn/showproblem.php? pid=2196 题意:每一个电脑都用线连接到了还有一台电脑,连接用的线有一定的长度,最后把全部电脑连成了一棵树,问 ...
- HDU 2084 数塔 DP
http://acm.hdu.edu.cn/showproblem.php?pid=2084 题目: 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走 ...
最新文章
- jsp空间流量是怎么计算的?
- C语言-人狼羊菜问题-最容易看懂的解决方法及代码
- gtid mysql failover_Keepalived + MySQLfailover + GTIDs 高可用
- 解决cookie跨域访问
- 文巾解题 45. 跳跃游戏 II
- 550什么意思_研报翻译官第二期:带你了解什么是CPI
- 笔记本电脑下载python视频-Python的用法笔记本
- 【图神经网络入门】GAT图注意力网络
- Adobe 成功案例之 ebay项目构建
- oracle数据库自动备份控制文件的目录,16.5 控制文件的自动备份和还原(1)
- 查看服务器虚拟机版本,查看虚拟机版本命令
- ffmpeg转码html5,FFMPEG转码技术在HTML5视频系统中的研究与应用
- 1946计算机用途,计算机在我们的工作、生活中的作用越来越大, 你知道计算机的起源于发展吗?请就计算机的发明时间(1946年)、大小、用途等...
- 评价神经网络性能的指标,神经网络是参数模型吗
- 上海升级为欧莱雅集团北亚区总部;西门子与太古可口可乐将共同打造18座数字化工厂 | 美通企业日报...
- d盘莫名其妙被占空间 win10_Win10系统C盘空间突然爆满的解决方法
- vue + elemen可远程搜索select选择器的封装(思路及源码分享)
- GitHub 设置和取消代理,加速 git clone
- Win10 20H1及以上文件误删恢复
- Could not initialize class JDBC.JDBCUtils 已解决