Sol

期望DP.

\(f[i][j][k]\) 表示已经确定了 \(i\) 个点, 最大环大小为 \(j\) ,个数为 \(k\) 的方案数.

转移非常复杂,因为细节特别多.

\(f[i][j][1]=\frac{A_{j}^{n}}{j},i=j,k=1\)

\(f[i][j][1]=\frac{A_{j}^{n-i+j}}{j} \sum_{l=1}^{j} g[i][j],i>j,k=1\)  这个地方的 \(g[i][j]\) 我写的跟论文里的不太一样...不知道是论文里写错了还是我理解错了.

\(f[i][j][k]=f[i-j][j][k-1]\frac{A_{j}^{n-i+j}}{jk},i>j,1<k*j<=i\) 因为要考虑几个环的顺序,所以要除去一个 \(k\) 的排列.

其中 \(g[i][j]=\sum_{l=2}^{\frac{i}{j}} f[i][j][l] \)

\(n<=100\) 没人打表?打表Rank1系列.

Update:因为期望总是小于 \(100\) ,而double类型以对数方式储存,所以可以保证答案的正确性.

Code

/**************************************************************
Problem: 2685
User: BeiYu
Language: C++
Result: Accepted
Time:392 ms
Memory:10508 kb
****************************************************************/ #include<cstdio>
#include<iostream>
using namespace std; const int N = 105; int n;
double fac[N],A[N][N];
double f[N][N][N],g[N][N],d[N];
double ans; int main(){
// freopen("in.in","r",stdin);
scanf("%d",&n); fac[0]=1;for(int i=1;i<=n;i++) fac[i]=fac[i-1]*i;
for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) A[i][j]=fac[i]/fac[i-j];
d[1]=0,d[2]=1;for(int i=3;i<=n;i++) d[i]=(i-1)*(d[i-1]+d[i-2]); for(int i=1;i<=n;i++){
for(int j=2;j<=i;j++){
if(i==j) f[i][j][1]=A[n][j]/j;
else{
for(int l=2;l<j;l++) f[i][j][1]+=g[i-j][l];
f[i][j][1]*=A[n-i+j][j]/j;
}
for(int k=2;k*j<=i;k++) f[i][j][k]=f[i-j][j][k-1]*A[n-i+j][j]/j/k;
}
for(int j=2;j<=i;j++) for(int k=1;k*j<=i;k++) g[i][j]+=f[i][j][k];
} for(int j=2;j<=n;j++) for(int k=1;k*j<=n;k++) ans+=j*k*f[n][j][k];
ans/=d[n];
printf("%.14lf\n",ans);
return 0;
}

  

BZOJ 2685: Sgu385 highlander的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. 概率dp学习记录

    论文参考 汤可因<浅谈一类数学期望问题的解决方法> 反正是很神奇的东西吧..我脑子不好不是很能想得到. bzoj 1415 1415: [Noi2005]聪聪和可可 Time Limit: ...

  3. 概率dp初探

    论文链接:  http://wenku.baidu.com/link?url=vEcfxpqAvGRf6JL9IL2R6v8plBgPnaP3tKp5niOBmoajk0y4CcpwFzL4SkfGS ...

  4. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  5. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  6. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  7. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

  8. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

  9. 【sdoi2013】森林 BZOJ 3123

    Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...

随机推荐

  1. Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互

    框架的东西太复杂也难以讲通,直接上代码: 一.首先得配置环境 和导入必要的jar包 有一些重要的如下: Filter文件夹下的SafetyFilter.java   model文件夹下的 Global ...

  2. 设计模式学习——策略模式(Strategy Pattern)

    0. 前言 最近在重构公司的一个项目的时候,在抽取DES加密重复部分代码的时候,突然间想起了策略模式,感觉策略模式好像可以应用上,于是重新学习了下策略模式.注:在DES加密中,有DES和TDES算法, ...

  3. guid正则表达

    a-fA-F0-9 加上下划线 _ 可以用 \w 来代替. ^\w{8}-(\w{4}-){3}\w{12}$ 如果不可以用下划线, 0-9 用 \d 代替 a-fA-F 就用其中一个 a-f,然后匹 ...

  4. OC-Q&A

    How to declare a string in Objective-C ? A C string is just like in C. char myCString[] = "test ...

  5. Yii2 rules验证规则

    Rules验证规则:  required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空. [['字段名1','字段名2'],required]    //字段 ...

  6. Orchard源码分析(6):Shell相关

    概述在Orchard中,提出子站点(Tenant)的概念,目的是为了增加站点密度,即一个应用程序域可以有多个子站点. Shell是子站点(Tenant)级的单例,换句话说Shell代表了子站点.对比来 ...

  7. Java生成html静态网页

    public static void makeHtml() { try { URL url = new URL("http://www.baidu.com/"); //本实事例通过 ...

  8. 关于MySQL的SLEEP(N)函数

    都知道通过在MySQL中执行select sleep(N)可以让此语句运行N秒钟: ? 1 2 3 4 5 6 7 mysql> select sleep(1); +----------+ | ...

  9. mongodb 基本用法大全

    1>给数据库添加用户名密码    db.addUser("xxx","yyy") 2>

  10. C#技术漫谈之垃圾回收机制(GC)(转)

    GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是 ...