UVALive 6672 Bonus Cards 概率dp
2024-09-29 16:28:05
题意呢 就是有两种售票方式 一种是icpc 一种是其他方式 icpc抢票成功的概率是其他方式的2倍……
这时 一个人出现了 他通过内幕知道了两种抢票方式各有多少人 他想知道自己如果用icpc抢票成功的概率是多少 用acm抢票成功的概率是多少……
做过不多的概率dp 还在摸索……
dp[i][j]代表第i轮有j个icpc的人已经有票了……
当然同时i-j个通过其他方式抢票的人也有票了 这就是用同样的函数搜两次的原理……
优化一次i<=a 一次是把初始化放到for里……
第一次见这么卡时间的题……
把dp数组的优化放到for里就过了……
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<string.h>
#include<string>
#include<map>
#include<vector>
#include<queue>
#define M(a,b) memset(a,b,sizeof(a))
using namespace std;
double dp[][]; //i轮j个有票
bool ok=false;
double solve(int a,int b,int c){
double n=(double)a;
double icpc=(double)b;
double acm=(double)c;
if(n>icpc+acm) n=icpc+acm;
if(a>b+c) a=b+c;
dp[][]=;
for(int i=;i<=n;i++){
dp[i][]=; //优化初始化就过了
dp[i][]+=dp[i-][]*(acm-i+1.0)/(acm-i+1.0+icpc*2.0);
}
for(int i=;i<=n;i++){
dp[i][i]=;
dp[i][i]+=dp[i-][i-]*((icpc-i+1.0)*2.0)/(acm+(icpc-i+1.0)*2.0);
}
for(int i=;i<=n;i++){
for(int j=;j<i&&j<=a;j++){
dp[i][j]=;
//这里还可以优化
dp[i][j]+=dp[i-][j]*(acm-(i-j-1.0))/(acm-(i-j-1.0)+(icpc-j)*2.0);
dp[i][j]+=dp[i-][j-]*((icpc-j+1.0)*2.0)/(acm-(i-j)+(icpc-j+1.0)*2.0);
}
}
double ans=;
for(int i=;i<=n&&i<=a;i++)
if(ok)ans+=(dp[a][i])*i/icpc;
else ans+=(dp[a][i])*(n-i)/acm;
return ans;
} int main(){
int n,icpc,acm;
while(~scanf("%d",&n)){
if(n==) break; //这里不加应该也可以
scanf("%d%d",&icpc,&acm);
if(icpc==&&acm==){
printf("1.0000000000000000\n");
printf("1.0000000000000000\n");
continue;
}
ok=true;
printf("%.16lf\n",solve(n,icpc+,acm));
ok=false;
printf("%.16lf\n",solve(n,icpc,acm+));
}
return ;
}
最新文章
- 求两点之间最短路径-Dijkstra算法
- Apache Shiro和Spring Security的详细对比
- Java泛型总结(转)
- 【概念笔记】JAVA基础 - part1
- CentOS修改服务器系统时间
- [转]Windows的窗口刷新机制
- 【转发】Linux下如何查看当前支持的文件系统及各分区的文件系统类型
- 高逼格的画图:VIM原来可以这样玩
- C++ 二叉树遍历实现
- Android 消息传递之Bundle的使用——实现object对象传输(一)
- eclipse清除运行Maven build...后积累的配置项
- (转)Linux服务器安装配置tomcat
- css的position
- Python socket网络编程(通信介绍)
- b总结
- Odoo小数精度及货币精度详解
- python sorted三个例子
- Doxygen简单经验谈。。。
- 玩转OpenStack
- java版云笔记(四)
热门文章
- sql时间转换函数--备忘
- FTP上传下载工具(FlashFXP) v5.5.0 中文版
- 闹心的python编码
- CodeForces 677D Vanya and Treasure
- oracle中关于Oracle Database 11g Express Edition 打不开的问题
- React native android 最常见的10个问题
- git config
- vim的配置文件参数
- JSON中JObject和JArray,JValue序列化(Linq)
- 分子量(Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)