ACdream 1066:Bet

Problem Description

Josnch星球是一个赌博之风盛行的星球。每个人一出生就有一定数额的钱,之后的所有收入只能由赌博获得(OMG,如果RP不好,输光了所有的钱。。。)假设赌博公司的某场赌博有N个结果,每个结果能获得的赔率比分别是a[1],a[2]...a[N]。假设现在XXX有X块钱,问他选择怎样的策略才能使得最坏情况下回报最大(假设N个结果中只有一个是有回报的,X块钱必须全部用在这次赌博上,赔率比就是a[i],假设你在第 i 个结果中投入了 y 块钱,那么你的回报是 y * a[i],所谓策略是你在每个结果上的投入应该是怎么分配,比如样例N
= 2的时候,赔率比分别是1,2,你有1000块钱,那么买 第一个2000 /3,, 后一个1000 / 3,这样最坏情况下你的回报是666.67)

Input

多组数据,对于每组数据,一个数N(2 <= N <= 100),N个选择,接下来一行有N个数,每个数的范围是0.01 - 100.00。最后一行是一个数X(0.01 <= X <= 1000.00),代表你的钱总额

Output

每个输出一行,最坏情况下的最大收益,保留两位小数.

Sample Input

2
1 2
1000

Sample Output

666.67

Source

dream

Manager

nanae

二分枚举所得的利润

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define exp 1e-8
int t,n;
double a[105],x;

int main()
{
    int i;
    while(~scanf("%d",&n))
    {
        for(i = 0; i<n; i++)
            scanf("%lf",&a[i]);
        scanf("%lf",&x);
        double l,r,mid,ans;
        l = 0,r = x*100;
        while(r-l>exp)
        {
            double sum = 0;
            mid = (l+r)/2;
            for(i = 0; i<n; i++)
                sum+=mid/a[i];
            if(sum<=x)
            {
                ans = mid;
                l = mid;
            }
            else
                r = mid;
        }
        printf("%.2f\n",ans);
    }

    return 0;
}

ACdream 1066:Bet

时间: 2024-08-04 06:12:58

ACdream 1066:Bet的相关文章

acdream.Bet(数学推导)

Bet Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit Status Practice ACdream 1066 Description Josnch星球是一个赌博之风盛行的星球. 每个人一出生就有一定数额的钱,之后的所有收入只能由赌博获得(OMG,如果RP不好,输光了所有的钱...) 假设赌博公司的某场赌博有 N 个结果,每个结果能获得的赔率比分别是 a[1],a[2]...a[

hihoCoder - 1066 - 无间道之并查集 (并查集 + map)

#1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之,小Hi和小Ho决定趁着这朗朗春光出去玩. 但是刚刚离开居住的宾馆不久,抄近道不小心走入了一条偏僻小道的小Hi和小Ho就发现自己的前方走来了几个彪形大汉,定睛一看还都是地地道道的黑人兄弟!小Hi和小Ho这下就慌了神,捡肥皂事小,这一身百把来斤别一不小心葬身他乡可就没处说去了. 就在两人正举足无措之时,为首的黑叔叔

[BZOJ 1066] [SCOI2007] 蜥蜴 【最大流】

题目链接:BZOJ - 1066 题目分析 题目限制了高度为 x 的石柱最多可以有 x 只蜥蜴从上面跳起,那么就可以用网络流中的边的容量来限制.我们把每个石柱看作一个点,每个点拆成 i1, i2,从 i1 到 i2 连一条边,容量为这个石柱 i 的高度,即跳跃次数限制.来到这个石柱就是向 i1 连边,从这个石柱跳起就是从 i2 向外连边,这样只要从石柱 i 跳起就一定会消耗 i1 到 i2 的边的容量.如果 i 有蜥蜴,就从 S 到 i1 连一条容量为 1 的边,如果从石柱 i 能跳出边界,就从

POJ 1066 Treasure Hunt [想法题]

题目链接: http://poj.org/problem?id=1066 -------------------------------------------------------------------------------------------------------- 这题刚看后可能会去纠结如何建图后进行最短路 不过这样做不仅代码会复杂许多 还有可能出现些不好判断的部分 不过再多想一下我们可以发现如下性质 如果起点和终点位于某条障碍线段的两侧 那么这条线段有且仅有一次被穿过 所以只

ACdream 1203 - KIDx&#39;s Triangle(解题报告)

KIDx's Triangle Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statistic Next Problem Problem Description One day, KIDx solved a math problem for middle students in seconds! And than he created this problem. N

acdream 1738 世风日下的哗啦啦族I

原题链接:http://acdream.info/problem?pid=1738 树套树裸题,如下: 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #define lc root<<1 7 #define rc root<<1|1 8 using std::so

POJ1644:To Bet or Not To Bet(概率DP)

Description Alexander Charles McMillan loves to gamble, and during his last trip to the casino he ran across a new game. It is played on a linear sequence of squares as shown below. A chip is initially placed on the Start square. The player then trie

数学 ACdream 1196 KIDx&#39;s Triangle

题目传送门 1 /* 2 这道题花了好长时间AC,思路有,但是表达式少写了括号一直乱码,囧! 3 注意:a==0时要特判:) 4 */ 5 #include <cstdio> 6 #include <algorithm> 7 #include <iostream> 8 #include <cstring> 9 #include <string> 10 #include <cmath> 11 using namespace std; 1

ACdream 之ACfun 题解

A - ACfun Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatus Problem Description 题目链接点击打开链接 As a former ACMer, "AC" is a special abbreviated word which can bring much pleasure to me. Sometimes it means