传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2048

全错=全不匹配

设当前全错的个数是dp[n]

那么前(n-1)个全错的话,第n个数就可以从前(n-1)个任意挑选一个进行交换,得到的即是全错的;

dp[n] += (n-1)*dp[n-1]

也可以从下面这种情况样获得全错的排列:

在前(n-1)个中挑出(n-2)个全错,仅有一个对的情况,第n个数只需要和这个对的交换就能得到全错的结果。

可供挑选的(n-2)个全错的情况,在(n-1)个数中,有(n-1)种;(n-2)个全错又有dp[n-2]种

所以:

dp[n] += (n-1)*dp[n-2]

最终递推式就是:

dp[i]=(i-1)*(dp[i-1]+dp[i-2]);

  

#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
#define sc scanf
#define pt printf
#define maxe 25600
#define maxv 55
#define maxn 21
#define mll unsigned long long
const int inf =;
mll dp[maxn];
mll w1[maxn],w2[maxn],b1[maxn],b2[maxn];
mll A[maxn];
int main()
{
freopen("in.txt","r",stdin);
mll i;
A[]=; for(i=;i<=;++i) A[i]=A[i-]*i;
dp[]=,dp[]=; for(i=;i<=;++i) dp[i]=(i-)*(dp[i-]+dp[i-]);
int T,n;
sc("%d",&T);
while(T--)
{
sc("%d",&n);
double ans = 1.0*dp[n]/A[n];
ans*=100000.0;
int res = (int)ans;
if(res%>=) res=res-res%+;
else res=res-res%;
res/=;
//pt("%d\n",res);
i=;
char s[];
while(res!=)
{
s[i]=res%+''; res/=; --i;
}
for(++i;i<=;++i)
{
if(i==) putchar('.');
putchar(s[i]);
}
putchar('%'); putchar('\n');
}
return ;
}

HDU 2048

动态规划-递推-HDU2048的更多相关文章

  1. 最长上升子序列(动态规划递推,LIS)

    1759:最长上升子序列 题目: 总时间限制: 2000ms 内存限制: 65536kB 描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的 ...

  2. 最大子段和(洛谷P1115,动态规划递推)

    洛谷题目链接 题目赋值出来格式有问题,所以我就只放题目链接了 下面为ac代码 #include<bits/stdc++.h> #define ll long long using name ...

  3. 数的计数(noip2001,动态规划递推)

    题目链接: 普通版: https://www.luogu.org/problemnew/show/P1028 数据加强版: https://www.luogu.org/problemnew/show/ ...

  4. P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)

    题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...

  5. P2347 砝码称重(动态规划递推,背包,洛谷)

    题目链接:P2347 砝码称重 参考题解:点击进入 纪念我第一道没理解题意的题 ''但不包括一个砝码也不用的情况'',这句话我看成了每个砝码起码放一个 然后就做不出来了 思路: 1.这题数据很小,10 ...

  6. NOIP 2008 传纸条(洛谷P1006,动态规划递推,滚动数组)

    题目链接:P1006 传纸条 PS:伤心,又想不出来,看了大神的题解 AC代码: #include<bits/stdc++.h> #define ll long long using na ...

  7. NOIP2000方格取数(洛谷,动态规划递推)

    先上题目: P1004 方格取数 下面上ac代码: ///如果先走第一个再走第二个不可控因素太多 #include<bits/stdc++.h> #define ll long long ...

  8. P1541 乌龟棋 题解(洛谷,动态规划递推)

    题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...

  9. Coin Toss(uva 10328,动态规划递推,限制条件,至少转至多,高精度)

    有n张牌,求出至少有k张牌连续是正面的排列的种数.(1=<k<=n<=100) Toss is an important part of any event. When everyt ...

随机推荐

  1. VS2010中解决Qt“Unable to find a Qt build“

    转自:http://blog.sina.com.cn/s/blog_687960370101d0eu.html 三种方法: 1.在QT菜单下单击OPTION,然后单击ADD,选择QT安装路径. 2.运 ...

  2. 成为k8s大佬,从这个操作开始(伪) - 程序员学点xx 42 k8s

    目录 Kubernetes -2- 这是yann的第97篇分享 本日状态: ​ 饿着肚子写公众号的 yann 同学. 第 1 部分 反省 昨天的内容被熊哥批评了. 熊哥说,「你光想着自己爽,一句我认为 ...

  3. PS使用记录:人像(证件照)更换背景

    PS使用记录:人像(证件照)更换背景 参考:非常干净的抠羽毛ps教程抠图羽毛 (1)准备2019PS,原图 (2)选择人像:选择->主体 (3)边缘处理:选择 ->选择并遮住 ->选 ...

  4. SCRUM REPORT DIRECTORY

    Alpha sprint scrum 1 scrum 2 scrum 3 scrum 4 scrum 5 scrum 6 scrum 7 scrum 8 scrum 9 scrum 10 Beta s ...

  5. Tomcat支持SSL加密网站

    配置Tomcat,以支持SSL对网站加密,关键性配置如下: 思路:在tomcat服务器web1上做相应配置->客户端测试. 1.创建加密用的私钥和证书文件 [root@web1 ~]# keyt ...

  6. glob & fnmatch -- 使用Unix style通配符

    通配符: ?  匹配单个字符 *   匹配 0+ 个字符 [seq]   匹配属于区间的单个字符 [!seq]  匹配不属于区间的单个字符 注意: "." just a " ...

  7. tail 显示文件内容尾部

    1.命令功能 tail默认显示文件内容尾部10行. 2.语法格式 tail  option  file 参数说明 参数 参数说明 -n 显示指定行数 -f 实时输出文件变化后追加的数据 -s 监视文件 ...

  8. python笔记(2)---不定长参数

    python自定义函数中有两种不定长参数, 第一种是*name:加了星号 * 的参数会以元组(tuple)的形式导入 第二种是**name:加了星号 * *的参数会以字典(dict)的形式导入 *na ...

  9. 第五周作业—N42-虚怀若谷

    一.查找/etc目录下大于1M且类型为普通文件的所有文件 [root@centos7 ~]# find /etc -type f -size +1M -exec ls -lh {} \; -r--r- ...

  10. python学习笔记(九)内置函数

    print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真 True print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真 True print( ...