题意:1-n个位置中,每个位置填一个数,问至少有l个数是相同的概率。

可以转化求最多有l-1个数是相同的。

dp[i][j]表示前i个位置填充j个位置的方案数,并且要满足上面的条件。

则:

dp[i][j]=∑dp[i-1][j-k]*c[m-j+k][k];

也就是看第i个数,可以不填,填一个位置,两个位置······这样累加过来。

代码如下:

 import java.math.*;
import java.util.*;
public class Main {
public static void main(String arg[]){
BigInteger ans,sum,gcd;
BigInteger c[][]=new BigInteger[][];
int i,j,k,t,n,m,l;
for(i=;i<=;i++){
c[i][]=BigInteger.ONE;
c[i][i]=BigInteger.ONE;
}
for(i=;i<=;i++)
for(j=;j<i;j++)
c[i][j]=c[i-][j].add(c[i-][j-]);
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
m=cin.nextInt();
n=cin.nextInt();
l=cin.nextInt();
if(l>m){
System.out.println("mukyu~");
continue;
}
BigInteger dp[][]=new BigInteger[][];
for(i=;i<=n;i++)
for(j=;j<=m;j++)
dp[i][j]=BigInteger.ZERO;
dp[][]=BigInteger.ONE;
for(i=;i<=n;i++)
for(j=;j<=m;j++){
for(k=;k<=j&&k<l;k++){
dp[i][j]=dp[i][j].add(dp[i-][j-k].multiply(c[m-j+k][k]));
}
}
ans=BigInteger.ZERO;
sum=BigInteger.valueOf(n).pow(m);
for(i=;i<=n;i++){
ans=ans.add(dp[i][m]);
}
ans=sum.subtract(ans);
gcd=ans.gcd(sum);
System.out.println(ans.divide(gcd)+"/"+sum.divide(gcd));
}
}
}

zoj 3380 Patchouli's Spell Cards 概率DP的更多相关文章

  1. ZOJ 3380 Patchouli's Spell Cards

    方案数,$dp$. 总的方案数有$n^m$种,符合要求的直接算不好算,可以算反面,即不符合要求的. 设$dp[i][j]$表示前$i$种等级填了$j$个位置,那么$dp[i][j]=sum(dp[i- ...

  2. 【ZOJ】3380 Patchouli's Spell Cards

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3957 题意:m个位置,每个位置填1~n的数,求至少有L个位置的数一样的概率(1 ...

  3. UVALive 6672 Bonus Cards 概率dp

    题意呢 就是有两种售票方式 一种是icpc 一种是其他方式 icpc抢票成功的概率是其他方式的2倍…… 这时 一个人出现了 他通过内幕知道了两种抢票方式各有多少人 他想知道自己如果用icpc抢票成功的 ...

  4. ZOJ-3380 Patchouli’s Spell Cards DP, 组合计数

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3380 题意:有m种不同的元素,每种元素都有n种不同的相位,现在假 ...

  5. ZOJ 3329 One Person Game 【概率DP,求期望】

    题意:有三个骰子,分别有k1,k2,k3个面. 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和. 当分数大于n时结束.求游戏的期望步数.初始分数为0 设dp[i]表示达到 ...

  6. ZOJ 3329 One Person Game(概率DP,求期望)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3754 题目大意: 有三个骰子,分别有K1,K2,K3个面,一次投掷可以得到三个 ...

  7. 概率dp专场

    专题链接 第一题--poj3744 Scout YYF I  链接 (简单题) 算是递推题 如果直接推的话 会TLE 会发现 在两个长距离陷阱中间 很长一部分都是重复的 我用 a表示到达i-2步的概率 ...

  8. [转]概率DP总结 by kuangbin

    概率类题目一直比较弱,准备把kuangbin大师傅总结的这篇题刷一下! 我把下面的代码换成了自己的代码! 原文地址:http://www.cnblogs.com/kuangbin/archive/20 ...

  9. 概率DP

    POJ 3744 Scout YYF I 这就是一个乱搞题,暴力发现TLE了,然后看了看discuss里说可以矩阵加速,想了一会才想明白怎么用矩阵,分着算的啊.先算f[num[i]-1]之类的,代码太 ...

随机推荐

  1. popViewControllerAnimated 后,对页面内UITableView 内数据刷新

    popViewControllerAnimated后,这时它不执行viewDidLoad,所以不能及时对viewControler及时刷新,此时对该页面进行操作可以调用viewWillAppear:( ...

  2. JQuery AJAX的嵌套使用

    <script type="text/javascript"> $(function () { $.post("Ajax/HideHandler.ashx&q ...

  3. JQuery验证工具

    一.写法一 var Validator = { // 邮箱isEmail : function(s) {var p = "^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z ...

  4. XML格式以及相关libxml库学习

    本文参考 XML文件格式语法以及DTD,摘除其中自己认为必要的知识点,在此记录如下. 先给出一个xml的实例文件, <?xml version="1.0" encoding= ...

  5. 利用多核来加速Linux命令行

    本文转载自 多核CPU来加速 awk, sed, bzip2, grep, wc等,如需查看原文,请点此链接进入. -------------------------------我是分割线 开始 -- ...

  6. Linux 内核 链表 的简单模拟(2)

    接上一篇Linux 内核 链表 的简单模拟(1) 第五章:Linux内核链表的遍历 /** * list_for_each - iterate over a list * @pos: the & ...

  7. [C#]AccessUtils

    关键代码: using System; using System.Data; using System.Data.OleDb; namespace CSharpUtilHelpV2 { /// < ...

  8. C#如何获取快捷方式指向的目标文件

    前几天,做个小程序时遇到的问题,在百度上搜索了很久,没有发现好的解决方案,在英文网站上立刻搜到办法,看来还是国外的资源要全面一些,只是Google经常访问不正常,没办法啊. “C#如何获取快捷方式指向 ...

  9. ACE_linux:任务 & 命令(Task and Command)

    1.涉及类 ACE_Task//ACE任务ACE_Activation_Queue//ACE命令队列 ACE_Method_Request//ACE请求(命令) 2.简介 ACE主动对象模式 主动对象 ...

  10. php function 定义时函数名前加&符号的意义

    看了很多帖子,但是都不能理解,又去看了很多资料,终于名白了.记下备忘. 问题:php在声明函数时,函数名前面的&符号有什么用? 一直想不通.很多帖子说类似于变量的$a=&$b,但是$b ...