在一个D维空间,只有整点,点的每个维度的值是0~n-1 。现每秒生成D条线段,第i条线段与第i维度的轴平行。问D条线段的相交期望。

生成线段[a1,a2]的方法(假设该线段为第i条,即与第i维度的轴平行)为,i!=j时,a1[j]=a2[j],且随机取区间[0,n-1]内的整数。然后a1[i],a2[i]在保证a1[i]<a2[i]的前提下同样随机。

由于D条线段各自跟自己维度的轴平行,我们可以转换成只求第i个维度与第j个维度的相交期望,然后乘以C(2,n)就好了

显然线段[a1,a2]和线段[b1,b2]要有交点,则k!=i&&k!=j时(a1[k]==a2[k],b1[k]==b2[k]这2个是必然有的)必须要有,a1[k]==b1[k]. 这个的概率是1/n

所以k!=i&&k!=j时,概率期望是(1/n).pow(D-2)

下面看k==i的情况,k==j的情况是一样的。k==i的时候a1[k]<a2[k],b1[k]==b2[k].则我们求的是a1[k]<=b1[k]<=a2[k]&&a1[k]<a2[k]的概率。

即,3个随机数a,b,c. 求P(a<=b<=c && a<c).可用一个x轴画图示意。取任意一点b=i(0<=i<=n-1)。满足的有a<i&&c>i和a==i&&c>i和a<i&&c==i。

3种情况数分别是(i-0)*(n-1-i), n-1-i, i-0.

随机取b点位置的方案数是n,选取线段[a,c]的方案数是C(2,n),所以要将所有的相交次数除以这2个方案数,就是相交的期望

所以P(a<=b<=c && a<c) = ∑((1/n)*(1/C(2,n))*(i*(n-1-i)+n-1-i+i)) = 1/(n*C(2,n))*∑(-i*i+(n-1)*i+n-1),  其中0<=i<=n-1

这个化简得到P(a<=b<=c && a<c) = (n+4)/(3*n)

所以线段[a1,a2]和[b1,b2]的相交期望是 P = ( (1/n)^(d-2) ) * ( ( (n+4)/(3*n) )^2 ) = ( (n+4)^2 ) / ( 9*(n^d) )

java大数AC之?还差一步。。。刚刚那个是2个维度的。

所以最后答案应该是C(2,D)*P =  ( D*(D-1)/2 * (N+4)^2 ) / ( 9*(N^D) )

第一次打这样的推公式=。=其实推公式主要是定下来动手慢慢耐心推。。。。

打得我都晕了,好多括号,不知道有没错。。。。

 import java.math.BigInteger;
import java.util.Scanner; public class Main {
public static void main(String[] agrs){
Scanner scan = new Scanner(System.in);
int n,d;
while(scan.hasNext()){
n=scan.nextInt();
d=scan.nextInt();
if(d==1){
System.out.println("0");
continue;
}
BigInteger a = new BigInteger("0");
BigInteger b = new BigInteger("0");
a = BigInteger.valueOf(d*(d-1)/2).multiply(BigInteger.valueOf(n+4).pow(2));
b = BigInteger.valueOf(9).multiply(BigInteger.valueOf(n).pow(d));
if(a.equals(b)){
System.out.println("1");
continue;
}
BigInteger gg = a.gcd(b);
a = a.divide(gg);
b = b.divide(gg);
System.out.print(a);
System.out.print("/");
System.out.println(b);
}
scan.close();
}
}

HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)的更多相关文章

  1. hdu 4873 ZCC Loves Intersection(大数+概率)

    pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...

  2. HDU 4873 ZCC Loves Intersection(可能性)

    HDU 4873 ZCC Loves Intersection pid=4873" target="_blank" style="">题目链接 ...

  3. HDU 4876 ZCC loves cards(暴力剪枝)

    HDU 4876 ZCC loves cards 题目链接 题意:给定一些卡片,每一个卡片上有数字,如今选k个卡片,绕成一个环,每次能够再这个环上连续选1 - k张卡片,得到他们的异或和的数,给定一个 ...

  4. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  5. hdu 4882 ZCC Loves Codefires(数学题+贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4882 ------------------------------------------------ ...

  6. HDU 4882 ZCC Loves Codefires(贪心)

     ZCC Loves Codefires Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  7. hdu 5288 ZCC loves straight flush

    传送门 ZCC loves straight flush Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K ...

  8. HDU 5228 ZCC loves straight flush( BestCoder Round #41)

    题目链接:pid=5228">ZCC loves straight flush pid=5228">题面: pid=5228"> ZCC loves s ...

  9. HDU 4882 ZCC Loves Codefires (贪心)

    ZCC Loves Codefires 题目链接: http://acm.hust.edu.cn/vjudge/contest/121349#problem/B Description Though ...

随机推荐

  1. 初探Ajax

    1.什么是Ajax Ajax是Asynchronous JavaScript and XML的缩写,这一技术能从服务器请求额外数据而无需卸载页面.传统的HTTP请求流程大概是这样的,浏览器向服务器发送 ...

  2. PHP的扩展类 mysqli_stmt:预处理类

    mysqli和mysqli_result能完成的功能 都可以使用mysqli_stmt类开完成 1.编译一次,使用多次,类似于存储过程 2.参数化查询,可防止sql注入 1: <?php 2: ...

  3. PHP基础 数组函数 的总结

    <?php /** * PHP基础 数组操作函数 * * 指针函数:[类似于数据库的游标] 见例1.1 * current($arr)/pos 返回当前指针指向的元素 * key($arr) 返 ...

  4. HDOJ 3593 The most powerful force

    树形DP / 泛化物品的背包...可以去看09年徐持衡论文<浅谈几类背包问题> The most powerful force Time Limit: 16000/8000 MS (Jav ...

  5. lvs部署-DR模式

    DR模式 角色 IP地址 备注 LVS负载均衡器 192.168.119.132 VIP:192.168.119.150    ipvsadm http_Real server 192.168.119 ...

  6. Knockout.Js案例二Working With Lists And Collections

    案例一:Foreach绑定 通常,您要生成重复的UI元素,特别是当显示列表,用户可以添加和删除元素.KO.JS让你轻松,使用的数组和foreach绑定. 在接下来的几分钟,您将构建一个动态UI保留席位 ...

  7. IO基础

    流向: 输入流:从硬盘到java 程序 (读数据) 输出流:从java 到硬盘 (写数据) 数据类型: 字节流:    {用记事本打开,不能读懂,用 字节流}     输入:   InputStrea ...

  8. IntelliJ中的main函数和System.out.println()快捷键

    1.在IntelJ中和Eclipse中稍有不同,在Eclipse中,输入main再按Alt+/即可自动补全main函数,但是在IntellJ中则是输入psvm,选中即可 2.在方法体内部有for循环, ...

  9. qt-5.6.0 移植之qt源码编译

    其实这只是给自己看的一个configure选项笔记,没有太多的东西. 首先: 下载qt5.6的源码: 地址: http://download.qt.io/archive/qt/5.6/ 下载完解压: ...

  10. Hashtable和HashMap的区别举例

    我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable ...