zoj 3380 Patchouli's Spell Cards 概率DP
题意: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的更多相关文章
- ZOJ 3380 Patchouli's Spell Cards
		
方案数,$dp$. 总的方案数有$n^m$种,符合要求的直接算不好算,可以算反面,即不符合要求的. 设$dp[i][j]$表示前$i$种等级填了$j$个位置,那么$dp[i][j]=sum(dp[i- ...
 - 【ZOJ】3380 Patchouli's Spell Cards
		
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3957 题意:m个位置,每个位置填1~n的数,求至少有L个位置的数一样的概率(1 ...
 - UVALive 6672 Bonus Cards 概率dp
		
题意呢 就是有两种售票方式 一种是icpc 一种是其他方式 icpc抢票成功的概率是其他方式的2倍…… 这时 一个人出现了 他通过内幕知道了两种抢票方式各有多少人 他想知道自己如果用icpc抢票成功的 ...
 - ZOJ-3380 Patchouli’s Spell Cards  DP, 组合计数
		
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3380 题意:有m种不同的元素,每种元素都有n种不同的相位,现在假 ...
 - ZOJ 3329 One Person Game 【概率DP,求期望】
		
题意:有三个骰子,分别有k1,k2,k3个面. 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和. 当分数大于n时结束.求游戏的期望步数.初始分数为0 设dp[i]表示达到 ...
 - ZOJ 3329 One Person Game(概率DP,求期望)
		
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3754 题目大意: 有三个骰子,分别有K1,K2,K3个面,一次投掷可以得到三个 ...
 - 概率dp专场
		
专题链接 第一题--poj3744 Scout YYF I 链接 (简单题) 算是递推题 如果直接推的话 会TLE 会发现 在两个长距离陷阱中间 很长一部分都是重复的 我用 a表示到达i-2步的概率 ...
 - [转]概率DP总结 by kuangbin
		
概率类题目一直比较弱,准备把kuangbin大师傅总结的这篇题刷一下! 我把下面的代码换成了自己的代码! 原文地址:http://www.cnblogs.com/kuangbin/archive/20 ...
 - 概率DP
		
POJ 3744 Scout YYF I 这就是一个乱搞题,暴力发现TLE了,然后看了看discuss里说可以矩阵加速,想了一会才想明白怎么用矩阵,分着算的啊.先算f[num[i]-1]之类的,代码太 ...
 
随机推荐
- JavaScript高级程序开发3笔记
			
Js对象 注意:js基本数据类型不是对象,但是"abc".match()这种,可以调用对象的方法,是因为调用方法是临时产生了一个wrapper的包装对象,this指向它: Js ...
 - javascript 中的 call
			
Javascript中call的使用 Javascript中call的使用自己感觉蛮纠结的,根据文档很好理解,其实很难确定你是否真正的理解. call 方法应用于:Function 对象调用一个对象的 ...
 - 免费的HTML5连载来了《HTML5网页开发实例详解》连载(五)图解通过Fiddler加速开发
			
Fiddler是Windows底下最强大的请求代理调试工具,监控任何浏览器的HTTP/HTTPS流量,窜改客户端请求和服务器响应,解密HTTPS Web会话,图4.44为Fiddler原理示意图. 图 ...
 - HDU1857题解(逆向思维trie)
			
题目link:http://acm.hdu.edu.cn/showproblem.php?pid=1857 先简述一下题目: 有一个RXC的字母矩形,R,C在500内,要匹配m个单词,m在100000 ...
 - [设计模式]NetworkManagementService中的观察者模式
			
观察者模式 观察者模式有如下角色 (1)被观察者(Subject) (2)观察者(Observer) public class Subject{ private: list<Observer&g ...
 - Servlet、Filter 生命周期
			
Servlet作为JavaEE必须掌握的内容,Struts2通过使用Filter的功能实现了一个MVC的框架.因此掌握这Servlet以及Filter的生命周期显得非常重要. 1. Servlet的生 ...
 - 用C语言实现统计一个文件夹中各种文件的比例
			
<UNIX环境高级编程>中的程序清单4-7就介绍了如何实现递归地统计某个目录下面的文件!我刚开始看过它的代码后,觉得照着敲太没意思了,所以就合上书自己写了一遍!为此还写了一篇博文,这是博文 ...
 - Winform ComboBox控件高亮显示
			
//重绘下拉表单窗口,需要在窗口设计代码中加入下面这一句 this.cmdChannelName.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawF ...
 - 解决ionic在ios无法使用focus,ios focus失效的问题
			
最近也偷懒,很久没有写博客了.今天在项目中遇到了这个奇葩的问题,基于ionic的ios的hybird APP 无法使用focus()获取焦点和键盘的问题. 问题:基于ionic的ios的hybird ...
 - 51nod1264线段相交
			
1264 线段相交 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交). 如果相交, ...