HPU--1266 Bet

题目描述

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 。

输入

多组数据。

对于每组数据,一个数 N (2 ≤  N ≤  100),N 个选择,接下来一行有 N 个数,每个数的范围是 0.01 ~ 100.00 。

最后一行是一个数 X (0.01 ≤  X ≤  1000.00),代表你的钱总额。

输出

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

样例输入

2
1 2
1000

样例输出

666.67思路:设总钱数为M,赔率的总个数为n,赔率为ai,每一个的投入为mi,则m1+m2+...+mn==M     每一项投入的收益为ai*mi     最坏的情况下收益最大:m1*a1==m2*a2==...==mn*an满足情况     a1/a2==m2/m1;     a1/a3==m3/m1;     a1/a4==m4/m1;     ...     a1/an==mn/m1;     左边和右边分别相加得:     a1/a2+a1/a3+a1/a4+...+a1/an==(m2+m3+m4+...mn)/m1                                ==(M-m1)/m1     剩一个未知数m1,解出m1,求出m1*a1即为所求结果代码:
 1 #include<cstdio>
 2 int main()
 3 {
 4     int n;
 5     double a[110],x;
 6     while(scanf("%d",&n)!=EOF)
 7     {
 8         for(int i=0;i<n;i++)
 9             scanf("%lf",&a[i]);
10         scanf("%lf",&x);
11         double ans=0;
12         for(int i=1;i<n;i++)
13             ans+=a[0]/a[i];
14         ans++;
15         printf("%.2lf\n",x/ans*a[0]);
16     }
17     return 0;
18 }
      
时间: 2024-11-25 13:33:42

HPU--1266 Bet的相关文章

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

[BZOJ 1266][AHOI2006]上学路线(最短路+最小割)

题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1266 分析: 很简单的题目,容易想到就是把所有的最短路径挑出来,然后在这个图里跑最小割就行了. 那么问题就变成了如何在原图中挑出所有的最短路径,我们可以从起点和终点做两次SPFA,然后看看哪些边在最短路径图中,很明显,如果某条边i,j满足d[s,i]+w[i,j]==d[j,t]那么这条边肯定在. 于是挑出来之后跑个最大流就行了.

BZOJ 1266 上学路线route(最小割)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1266 题意:给出一个无向图,每条边有长度和代价.求出1到n的最短路.之后删掉一些边使得1到n的最短路变大?在此情况下使得删掉边的代价之和最小. 思路:首先求出每个点到1和n的最短路.之后可以确定每条边是否为关键边(就是最短路上的边).将关键边建立网络流图,求最小割即可. struct node { int v,cap,next; }; node edges[N]; int head[N

BZOJ 1266 [AHOI2006]上学路线route

先对原图求一遍最短路..这里用什么算法都行,毕竟N很小直接floyd就可以啦.. 然后把可以当做最短路上的边加入到一个新图当中去..求一遍最小割(最大流)就好啦.. 可以当做最短路的的边的条件:G[1][u]+time+G[v][N]=G[1][N] 然而这题我WA了三次..因为没有在跑完最短路后重新建图,而是直接在Dinic用BFS构造残余网络分层图的时候判断条件G[1][u]+time+G[v][N]=G[1][N]..这会导致有可能无法反向增广..QAQ我毕竟还是too simple需要提

51Nod - 1266 蚂蚁

51Nod - 1266 蚂蚁 n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行.当蚂蚁爬到竿子的端点时就会掉落.由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去.对于每只蚂蚁,我们知道它距离竿子左端的距离xi,但不知道它当前的朝向.请计算各种情况当中,所有蚂蚁落下竿子所需的最短时间和最长时间. 例如:竿子长10cm,3只蚂蚁位置为2 6 7,最短需要4秒(左.右.右),最长需要8秒(右.右.右). Input 第1行:2个整数N和L,N为蚂蚁的数量,L为杆子的长度(1 <=

hpu 1695 一道签到题

一道签到题 时间限制: 2 Sec  内存限制: 128 MB 提交: 69  解决: 33 [提交][状态][讨论版] 题目描述 我想说这是一道签到题,意思就是本次测试中最水的一道,不过我这样说你真的愿意相信我吗?哈哈,题目是这样的给你一下小数,然后请告诉我分别告诉我这个小数的循环节的循环次数.循环节以及循环节长度 输入 输入包括多组测试数据每组测试数据1行,包括一个小数,小数的长度不超过200,小数大于0小于100 输出 分别输出这个小数的循环节的长度.循环节以及循环次数,中间以一个空格间隔

HDU 1266 Reverse Number(字符串逆转 水题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1266 Problem Description Welcome to 2006'4 computer college programming contest! Specially, I give my best regards to all freshmen! You are the future of HDU ACM! And now, I must tell you that ACM proble

uva 1541 - To Bet or Not To Bet(记忆化+概率)

题目链接:uva 1541 - To Bet or Not To Bet 题目大意:在一个棋盘上进行游戏,给定棋盘长度m,不算起始和终止,以及走的步数t.从起点开始,每轮可以丢一枚硬币,正面移动2步,方面移动1步:中间的格子有写操作,包括移动一定步数,停止一次操作.问说在t步内到达终点的概率. 解题思路:dp[i][j]表示走到第i格用掉j步的概率,然后记忆化搜索,因为保证状态重复,并且可以确定递归终止条件. #include <cstdio> #include <cstring>

CSU 1266: Divisible by 11 (数学啊 )

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1266 Description 对于一个整数x,记x的自右向左的各位分别为第1位,第2位,--如果x奇数位上的数字之和减去偶数位上的数字之和所得的结果能被11整除,那么x就能被11整除. Input 输入数据的第一行包含一个整数T (1 <= T <= 200),表示接下来一共有T组测试数据. 每组测试数据占一行,包含一个位数不超过100位的正整数x. Output 对于每组测试数据,

ACdream 1066:Bet

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