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份.首先可以确定的是如果石头的价值总和为奇数的话,那 ...
随机推荐
- 从浅到深掌握Oracle的锁
1.分别模拟insert,update和delete造成阻塞的示例,并对v$lock中的相应的信息进行说明,给 出SQL演示. Insert示例 会话:SQL> select * from ...
- cocos游戏的真正入口,用C++实现的demo版本
1.cocos游戏的出发点 在main函数中有一句: return CCApplication::sharedApplication()->run(); 2.经过层层深入发现,真正的入口: ...
- linux设置环境变量的方法
0.查看环境变量 export 1.直接执行命令,不过只有此次会话有效 export PATH=$PATH:/dir/I/want 2.修改profile文件 在里面加入: export PATH=& ...
- 简单的C语言小学四则运算设计
题目:设计一个简单的四则运算编辑器 思路:我使用的是C语言编程,看到题目首先要随机出3个随机数,其中两个为100以内的随机数(a,b),一个为0~3的随机数(k). k值的变化使得+ - * /的变化 ...
- GitHub教程--上传项目四步法 GitBash命令行下使用方法
之前就用过GitHub,感觉用GitHub托管自己的代码非常不错.可是之前用的都是窗口化的TortoiseGit,省了很多命令行的操作,但是个人非常喜欢使用命令行,于是,今天就试着用了用GitBash ...
- IIS OCIEnvCreate failed with return code -1
现象:windows server2008服务器,MVC使用NHiberate连接Oracle11g,程序部署到IIS后无法访问数据库,抛上述异常:在服务器上安装VS调试可以访问数据库 解决方法:连接 ...
- 【BZOJ】【1449】【JSOI2009】球队收益
网络流/费用流/二分图最小权匹配 题解:http://blog.csdn.net/huzecong/article/details/9119741 太神了!由于一赢一输不好建图,就先假设全部都输,再将 ...
- JDBC数据库连接池原理
JDBC是java数据库连接的简称.它是一种用于实行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成.其相关的API都在java.sql.*包下 ...
- android控件---自定义带文本的ImageButton
由于SDK提供的ImageButton只能添加图片,不能添加文字:而Button控件添加的文字只能显示在图片内部:当我们需要添加文字在图片外部时就不能满足我们的需求了,顾只能自己写个自定义ImageB ...
- 使用Provider时提示:Unable to get provider...
具体原因还不清楚,只是找到了原因: 这是因为自定义的Provider放的包路径不对,自定义的Provider应该放到和MainActivity同一个包中.