Gym 101194E / UVALive 7901 - Ice Cream Tower - [数学+long double][2016 EC-Final Problem E]
题目链接:
http://codeforces.com/gym/101194/attachments
题意:
现有 $N$ 支队伍参加比赛,只有一个队伍能获胜。给出每个队伍一个赔率 $A_i:B_i$,你往这个队投 $x$ 元,若该队获胜你可得到 $\frac{A_i+B_i}{A_i}\cdot x$ 元,否则得到 $0$ 元。
首先你要确保投注的每个队伍中,不管哪个胜利了你都可以赚,现在要求最多可以投多少个队伍。
题解:
假设你总共投注 $x(x>0)$ 元,且对于第 $i$ 个队伍你投了 $p_i \cdot x(0 \le p_i \le 1)$ 元。那么,必须满足 $p_i \cdot x \cdot \frac{A_i+B_i}{A_i}>x \Rightarrow p_i > \frac{A_i}{A_i+B_i}$
显然,$\sum p_i = 1$,必须满足 $\sum \frac{A_i}{A_i+B_i} < 1$,同时不管你选择多少队伍选择哪几个队伍,
又,只要满足 $\sum \frac{A_i}{A_i+B_i} < 1$ 我必然可以调整每个队伍相应的 $p_i$ 使得 $p_i > \frac{A_i}{A_i+B_i}$。
因此,只要尽可能选择 $\frac{A_i}{A_i+B_i}$ 小的队伍,直到 $\sum \frac{A_i}{A_i+B_i} \ge 1$ 为止。
double的精度不够,需要用long double。
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int n;
long double c[maxn];
int main()
{
int T;
cin>>T;
for(int kase=;kase<=T;kase++)
{
scanf("%d",&n);
for(int i=;i<n;i++)
{
double a,b;
scanf("%lf:%lf",&a,&b);
a=floor(a*);
b=floor(b*);
c[i]=a/(a+b);
}
sort(c,c+n);
int ans=;
long double sum=;
for(int i=;i<n;i++)
{
sum+=c[i];
if(sum>=) break;
ans++;
}
printf("Case #%d: %d\n",kase,ans);
}
}
Gym 101194E / UVALive 7901 - Ice Cream Tower - [数学+long double][2016 EC-Final Problem E]的更多相关文章
- Gym 101194D / UVALive 7900 - Ice Cream Tower - [二分+贪心][2016 EC-Final Problem D]
题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...
- 2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 二分+贪心
/** 题目:2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 链接:http://codeforces.com/gym/101194 题意:给n个木块,堆 ...
- Ice Cream Tower
2017-08-18 21:53:38 writer:pprp 题意如下: Problem D. Ice Cream Tower Input file: Standard Input Output f ...
- Ice Cream Tower(The 2016 ACM-ICPC Asia China-Final Contest 二分&贪心)
题目: Mr. Panda likes ice cream very much especially the ice cream tower. An ice cream tower consists ...
- Gym 101194D Ice Cream Tower
被一道数位DP折磨得欲仙欲死之后,再做这道题真是如同吃了ice cream一样舒畅啊 #include<bits/stdc++.h> using namespace std; #defin ...
- Ice Cream Tower Gym - 101194D (贪心 + 二分 )
题目链接 : https://cn.vjudge.net/problem/Gym-101194D 题目大意 : 给你n个冰激凌球,让你用这些冰激凌球去垒冰激凌,要求是下面的这一个必须是他上面一个的两倍 ...
- The 2016 ACM-ICPC Asia China-Final D. Ice Cream Tower 二分 + 贪心
题目大意: 对于给出的n个冰激凌球的大小,满足下面的球的大小是上一个的至少2倍,对于给出的k(由k的冰激凌球才能算作一个冰激凌塔),问n个冰激凌球可以最多堆出多少个高度为k的冰激凌塔 题目分析: 对于 ...
- Problem D. Ice Cream Tower
题解:二分加贪心,,,二分答案,然后进行判断,判断的时候,首先给每一组配一个最大的球,然后在向每一组里面填球,注意填球的时候要按组进行,每一组先填一个,然后更新每一组内的最小值,方便下一次寻找. #i ...
- Gym - 101670G Ice cream samples(CTU Open Contest 2017 尺取法)
题目: To encourage visitors active movement among the attractions, a circular path with ice cream stan ...
随机推荐
- rpm 打包的时候 不进行strip
http://blog.aka-cool.net/blog/2016/06/01/how-to-disable-strip-in-rpm-build/ https://www.ichenfu.com/ ...
- 解决python3环境下twisted安装问题
twisted的安装经常会出问题,提示: 1.twisted错误,报Unable to find vcvarsall.bat2.等 解决办法: 1.安装wheel,命令:pip install whe ...
- SpringBoot乱码
第一步: 第一步,约定好传参编码格式 不管是运用httpclient,还是原生http,都要设置传参的编码,为了统一,这儿全部设置为utf-8 第二步,修正application.properties ...
- BAT 删除隐藏文件
删除文件 del命令参数说明/F 强制删除文件./S 从所有子目录删除指定文件./Q 安静模式.删除全局通配符时,不要求确认./A 根据属性选择要删除的文件. 删除指 ...
- Clion使用MinGW编译好的boost库
MinGW编译Boost库可以参考我之前写的编译Boost的文章. 以下是cmake链接boost静态库的配置: cmake_minimum_required(VERSION 3.8) project ...
- 用交叉验证改善模型的预测表现-着重k重交叉验证
机器学习技术在应用之前使用“训练+检验”的模式(通常被称作”交叉验证“). 预测模型为何无法保持稳定? 让我们通过以下几幅图来理解这个问题: 此处我们试图找到尺寸(size)和价格(price)的关系 ...
- numpy累积
numpy累积有两类函数:np.cumxxxxx和np.ufunc.accumulate() import numpy as np a = np.arange(1, 5) print(np.cumpr ...
- 使用git和github进行协同开发流程
(本文假设各位已经对基本git的基本概念.操作有一定的理解,如无相关git知识,可以参考Pro Git这本书进行相关的学习和练习) 很多项目开发都会采用git这一优秀的分布式版本管理工具进行项目版本管 ...
- BrainFuck 指令
BrainFuck只有八条指令: 指令 含义 等价的C代码 > 指针加一 ++ptr; < 指针减一 --ptr; + 指针指向的字节的值加一 ++*ptr; - 指针指向的字节的值减一 ...
- [Z] SQL SERVER 的前世今生--各版本功能对比
https://www.cnblogs.com/OwenZeng/p/6813143.html