首页 技术 正文
技术 2022年11月8日
0 收藏 353 点赞 2,069 浏览 2655 个字

题目:

  The Codejamon game is on fire! Fans across the world are predicting and betting on which team will win the game.

  A gambling company is providing betting odds for all teams; the odds for the ith team is Ai :Bi . For each team, you can bet any positive amount of money, and you do not have to bet the same amount on each team. If the ith team wins, you get your bet on that team back, plus B/ Ai times your bet on that team.

  For example, suppose that there are two teams, with odds of 5:3 and 2:7 and you bet ¥20 on the first team and ¥10 on the second team. If the first team wins, you will lose your ¥10 bet on the second team, but you will receive your ¥20 bet back, plus 3/5 × 20 = 12, so you will have a total of ¥32 at the end. If the second team wins, you will lose your ¥20 bet on the first team, but you will receive your ¥10 bet back, plus 7/2 × 10 = 35, so you will have a total of ¥45 at the end. Either way, you will have more money than you bet (¥20+¥10=¥30).

  As a greedy fan, you want to bet on as many teams as possible to make sure that as long as one of them wins, you will always end up with more money than you bet. Can you figure out how many teams you can bet on?

Input:

  The input starts with one line containing exactly one integer T, which is the number of test cases. Each test case starts with one line containing an integer N: the number of teams in the game. Then, N more lines follow. Each line is a pair of numbers in the form Ai :Bi (that is, a number Ai, followed by a colon, then a number Bi , with no spaces in between), indicating the odds for the ith team.

Output:

  For each test case, output one line containing “Case #x: y”, where x is the test case number (starting from 1) and y is the maximum number of teams that you can bet on, under the conditions specified in the problem statement.

Note:

  In sample case #1, one optimal strategy is to bet 1.5 dollars on the first team and 1.5 dollars on the third team. If the first team wins, you will get 1.5 + 1.5 × (1.1/1) = 3.15 dollars back, and if the third team wins, you will get 1.5 + (1.7/1.5) × 1.5 = 3.2 dollars back. Both of these are higher than the total money that you bet (1.5 + 1.5 = 3 dollars). However, there is no way to bet on all three teams and be guaranteed a profit.

题意:

  有n个队伍,你现在对某些队伍下注,要求下注的队伍的个数尽量多,而且只要下注的队伍中有一支队伍获胜就能赚回本来,问最多可以下注多少支队伍。

思路:

  要想一支队伍赢就能赚回本来,那每支队伍赢了至少要赚回本来。所以可以用本钱来求下注的钱数。设下注的钱数为x,则sum = x*(1+b/a);,之后对数组排序求和,当和大于等于本钱时退出。

PS:

  这个题卡long double,卡到怀疑思路错了,最后队友题意试一下long double,竟然过了!!!

  long double 要比double表示的范围大,表示的精度也更大。相应的计算的时候速度也就慢了点。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn = 1e5+;
long double a[];int main()
{
ios::sync_with_stdio(false);
int T,n,cnt=;
char ch;
cin>>T;
while(T--)
{
memset(a,,sizeof(a));
long double sum = 1.0,aa,b;
cin>>n;
for(int i = ; i<n; i++)
{
cin>>aa>>ch>>b;
a[i] = sum/(1.0+b/aa);
}
sort(a,a+n);
int ans = ;
long double res = 0.0;
for(int i = ; i<n; i++)
{
res += a[i];
if(res<sum)
ans++;
else
break;
}
cout<<"Case #"<<cnt++<<": "<<ans<<endl;
}
return ;
}/*
样例输入:
1
3
1:1.1
1:0.2
1.5:1.7
样例输出:
Case #1: 2
*/
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,952
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,477
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,290
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,107
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,739
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,773