hdu 4159 Indomie (DP,数学概率)
推出数学公式:
#include<stdio.h>
#include<string.h>
__int64 C(int m,int n)
{
__int64 tmp=;
if(m>(n-m))m=n-m;
for(int i=; i<=m; i++)
{
tmp*=(n--);
tmp/=i;
}
return tmp;
}
int main()
{
int n,s;
int i,j,k;
//printf("#%I64d\n",C(10,50));
while(scanf("%d%d",&n,&s)!=EOF)
{
double sum=,tsum;
if(s>n)
{
printf("100.00000\n");
continue;
}
if(s==)
printf("0.00000\n");
else
{
for(i=; i<=s; i++)
{
sum+=(double)C(i,n)*((__int64)<<(n-i));
if(i==s-) tsum=sum;
}
printf("%.5lf\n",100.0*tsum/sum);
}
}
return ;
}
反面推出数学公式(超__int64):
#include<stdio.h>
#include<math.h> __int64 C(int m,int n)
{
__int64 tmp=;
if(m>(n-m))m=n-m;
for(int i=;i<=m;i++)
{
tmp*=(n--);
tmp/=i;
}
return tmp;
}
__int64 Sum(int n,int s)
{
__int64 tmp=,ret=;
for(int i=;i<n-s;i++)
{
tmp+=(C(i,n)*ret);
ret*=;
}
return tmp;
}
int main()
{
int n,s;
//printf("%d",C(25,50));
while(scanf("%d%d",&n,&s)!=EOF)
{
if(n<s)
{
printf("100.00000\n");
continue;
}
if(s==)printf("0.00000\n");
else
{
//printf("%lf\n",pow(3,n));
printf("%.5lf\n",-100.0*C(s,n)*pow(,n-s)/(pow(,n)-Sum(n,s)));
}
}
return ;
}
Dp解法:
转载:
//f(a,b)=2*f(a-1,b)+f(a-1,b-1)是公式
#include<stdio.h>
double p[][],o[][],k[][];
int main()
{
int a,b,c,d;
p[][]=;p[][]=;
for(a=;a<=;a++)
{
o[a][]=;
o[][a]=;
}
for(a=;a<=;a++)
{
p[a][]=*p[a-][];
p[][a]=;
}
for(a=;a<=;a++)
for(b=;b<=;b++)
{
p[a][b]=*p[a-][b]+p[a-][b-];
}
for(a=;a<=;a++)
for(b=;b<=;b++)
{
if(b>=a)
o[a][b]=*p[a-][b-]-;
else
o[a][b]=*o[a-][b]+o[a-][b-];
}
for(a=;a<=;a++)
for(b=;b<=;b++)
{
k[a][b]=o[a][b]/p[a][b]*;
}
while(scanf("%d%d",&a,&b)!=EOF)
{
if(b>a)
printf("100.00000\n");
else
printf("%.5lf\n",k[a][b]);
}
return ;
}
#include<stdio.h>
#include<string.h>
#define MM 1000000000000000.0
double dp[][];
int main()
{
int n,s,i,j;
while(scanf("%d%d",&n,&s)!=EOF)
{
memset(dp,,sizeof(dp));
if(s==)
{
printf("0.00000\n");
continue;
}
dp[][s] = ;
dp[][s-] = ;
for(i = ; i <= n ; i++)
for(j = ; j <= s ; j++)
{
dp[i][j] = dp[i-][j]*+dp[i-][j+];
}
double ss=;
for(i = ; i <= s ; i++)
{
ss+=dp[n][i]/MM;
}
dp[n][] = dp[n][]/MM;
double x = -1.0*dp[n][]/ss;
printf("%.5lf\n",x*);
}
return ;
}
hdu 4159 Indomie (DP,数学概率)的更多相关文章
- HDU 5396 区间DP 数学 Expression
题意:有n个数字,n-1个运算符,每个运算符的顺序可以任意,因此一共有 (n - 1)! 种运算顺序,得到 (n - 1)! 个运算结果,然后求这些运算结果之和 MOD 1e9+7. 分析: 类比最优 ...
- hdu 4123 树形DP+RMQ
http://acm.hdu.edu.cn/showproblem.php? pid=4123 Problem Description Bob wants to hold a race to enco ...
- hdu 4507 数位dp(求和,求平方和)
http://acm.hdu.edu.cn/showproblem.php?pid=4507 Problem Description 单身! 依旧单身! 吉哥依旧单身! DS级码农吉哥依旧单身! 所以 ...
- hdu 3709 数字dp(小思)
http://acm.hdu.edu.cn/showproblem.php?pid=3709 Problem Description A balanced number is a non-negati ...
- hdu 4352 数位dp + 状态压缩
XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 4283 区间dp
You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化
HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的 ...
- HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)
HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化) 题意分析 先把每种硬币按照二进制拆分好,然后做01背包即可.需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数 ...
- HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化)
HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化) 题意分析 给出一系列的石头的数量,然后问石头能否被平分成为价值相等的2份.首先可以确定的是如果石头的价值总和为奇数的话,那 ...
随机推荐
- linux CentOS 系统下如何将php和mysql命令加入到环境变量中
在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行“php -v”命令查看当前php版本信息时时, ...
- plist 读取 swift
// // ViewController.swift // plist读写 // // Created by mac on 15/7/13. // Copyright (c) 2015年 fangyu ...
- springboot日志
1.日志 Spring Boot内部日志系统使用的是Commons Logging,但开放底层的日志实现.默认为会Java Util Logging, Log4J, Log4J2和Logback提供配 ...
- Android -- 经验分享(二)
目录 自定义两个View进行画图,让 ...
- Android -- Drawable与Bitmap测试
Drawable 以下这个是测试加载10 ...
- 设计模式 -- 单例模式(Java&&PHP)
所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在.就像是Java Web中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等. 能够 ...
- Session invalidate
会清空所有已定义的session 而不是清空全部session的值也就是说 定义了一个名为 user 的session 调用invalidate()方法后使用Session.getValue(“use ...
- 【收藏】Linux下tomcat内存配置
常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space ...
- 第一个完整的cppunit单元测试程序
在极限编程中,测试程序本应该在编写主程序之前就要写好,然后将写好的类程序放在测试程序中进行测试,但考虑到项目中需求文档等并未将接口定义好,我无从开始,而且,自己对单元测试也是刚刚熟悉,需要一边写测试程 ...
- android 自动化压力测试-monkey 3 命令参数
使用monkey help 命令查看命令参数,如下: C:\Users\chenfenping>adb shell monkey -help usage: monkey [-p ALLOWED_ ...