https://code.google.com/codejam/contest/6304486/dashboard#s=p1

这是一道简单的dp,dp[i][j]代表A的voter为i,B的voter为j时的成功方案数,转移方程是dp[i][j]=dp[i-1][j]+dp[i][j-1],这里一定满足i>j,(由题意,不管何时,A都要赢),所以初始化dp[i][j]为-1,dp[0][0]=1;

这道题要注意的地方是:由于数据范围是2000,2000!非常大,所以要取对数,这是乘除对应变成加法,加法可转化为:c=log(e^a+e^b)->c=log(e^a(1+e^(b-a)))=a+log(1+e^(b-a))  这样就不会溢出了.

以下是我的代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#define eps 1e-8
#include<cmath>
using namespace std;
const int maxn=2e3+; double dp[maxn][maxn];
void init()
{ for(int i=;i<maxn;i++)
{
for(int k=;k<maxn;k++)
{
dp[i][k]=-;
}
}
dp[][]=log(1.0);
for(int i=;i<maxn;i++)
{
for(int k=;k<maxn;k++)
{
if(i>k)
{
if(dp[i-][k]!=-&&dp[i][k-]!=-)
{
dp[i][k]=dp[i-][k]+log(+exp(dp[i][k-]-dp[i-][k]));
}
else if(dp[i-][k]!=-)
{
dp[i][k]=dp[i-][k];
}
else if(dp[i][k-]!=-)
{
dp[i][k]=dp[i][k-];
}
}
}
}
}
int main()
{
// freopen("B-large-practice.in","r",stdin);
// freopen("data.out","w",stdout);
init();
int T;
scanf("%d",&T);
int n,m;
for(int kas=;kas<=T;kas++)
{
scanf("%d%d",&n,&m);
double ans=;
for(int i=;i<=m;i++)
{
ans+=(double)log(i)-(double)log(n+i);
}
ans+=(double)dp[n][m];
ans=exp(ans);
// ans+=eps;
printf("Case #%d: %.8f\n",kas,ans);
}
}

另外,这道题的答案其实就是(n-m)/n+m可以这样理解:

http://blog.csdn.net/febr2/article/details/55846416

最新文章

  1. [ASP.NET MVC 小牛之路]11 - Filter
  2. Android线程处理之Handler总结
  3. Change Tracking of SQLServer
  4. 30天轻松学习javaweb_打包web项目成war
  5. textarea中的文字自动换行问题
  6. App Store内购
  7. TCP/IP协议全解析
  8. MYSQL数据库45道练习题
  9. HTML DOM 改变 HTML 内容
  10. (十二)Deleting Documents
  11. HDU 6108(整除判断 数学)
  12. 初学git,初始化库|添加文件ignore|提交方法
  13. 使用Coverage进行代码覆盖率的测试
  14. 小项目分析之C++ 实现模拟银行排队
  15. mysql数据库备份shell
  16. java 1.8
  17. spa(单页面应用)的优缺点[转]
  18. win7系统注册表的权限修改
  19. 利用Ajax和Servlet实现输入框提示功能
  20. ECMAScript5之Object学习笔记(一)

热门文章

  1. python 接口自动化测试--框架整改(五)
  2. Webpack多入口文件、热更新等体验
  3. rpm包相关操作
  4. X64系统下IIS运行ASP网站HTTP500错误 【安装FoxMail Server时出现】
  5. 我的java学习笔记
  6. sub,dl,dt,排版,横向滚动条,浮动元素居中,box-sizing
  7. PRINCE2的发展情况是什么样
  8. 泛型加委托在EF下的操作例子
  9. 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:
  10. Java进阶之网络编程