博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu3664(递推dp)
阅读量:5949 次
发布时间:2019-06-19

本文共 790 字,大约阅读时间需要 2 分钟。

 

题目链接:

 

分析:dp[i][j]表示i个数的排列中E值为j的个数。假设现在已有一个E值为j的i的排列,对于新加入的一个数i+1,将其加入排列的方法有三:

1)把它放最后,加入后E值不变    

2)把它和一个满足A[k]>k的数交换,A[k]到最后,A[k]必定小于i+1,交换后E值不变,符合这样的k共有j个      

3)把它和一个不满足A[k]>k的数交换,A[k]到最后,A[k]必定小于i+1,交换后E值+1,符合这样的k共有i-j个      

根据这三种方法得到转移方程dp[i][j] = dp[i - 1][j] + dp[i - 1][j] * j + dp[i - 1][j - 1] * (i - j); 

 

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define inf 1<<30#define mod 1000000007using namespace std;LL f[1010][1010];void init(){ for (int i=1;i<=1000;i++) { f[i][0]=1; for (int j=1;j
0) printf("%I64d\n",f[n][k]); return 0;}
View Code

 

转载于:https://www.cnblogs.com/lienus/p/4122307.html

你可能感兴趣的文章
Javascript_备忘录5
查看>>
Can’t create handler inside thread that has not called Looper.prepare()
查看>>
敏捷开发方法综述
查看>>
Hadoop数据操作系统YARN全解析
查看>>
Django 运行报错 ImportError: No module named 'PIL'
查看>>
修改数据库的兼容级别
查看>>
Windows下同时安装两个版本Jdk
查看>>
文件上传到阿里云
查看>>
网络知识
查看>>
uoj#228. 基础数据结构练习题(线段树)
查看>>
iptables 端口转发--内网实现上网
查看>>
计蒜客NOIP模拟D1T2
查看>>
在android程序中加入widget(窗口小部件)并与之交互的关键代码
查看>>
WebSocket 是什么原理?为什么可以实现持久连接
查看>>
JSP中动态INCLUDE与静态INCLUDE的区别
查看>>
JS键盘事件监听
查看>>
ios开发周期之--(向上,向下,四舍五入)取整
查看>>
加油!
查看>>
拦截导弹问题(动态规划)
查看>>
iOS 单元测试(Unit Test 和 UI Test)
查看>>