ac1066
经过分析后的二分
题目是
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)
不妨假设最坏情况下回报为mid,假设在每个结果上的投入分别是x[1],x[2]...x[n],那么则有min(x[1] * a[1], x[2] * a[2] .. x[n] * a[n]) >= mid, 即对于任意的 i ,有x[i] * a[i] >= mid,所以x[1] >= mid / a[1] x[2] >= mid / a[2] ... x[n] >= mid / a[n]。因为X = x[1] + x[2] + .. x[n] 那么如果mid / a[1] + ... mid / a[n] <= X,说明最坏情况下至少可以取得的回报为mid(每个投入为x[1]...x[n]即可,剩余的钱随便乱搞)。否则说明总钱数不能满足这样情况。因此,如 果mid满足条件,即mid / a[1] + ... + mid / a[n] = mid * (1 / a[1] + .. 1 / a[n]) <= X,对于任意P <= mid的数,必然满足P * (1 / a[1] + .. 1 / a[n]) <= X 如果mid不满足条件,那么mid * (1 / a[1] + .. 1 / a[n]) > X,对于任何大于mid的数Q,Q * (1 / a[1] + ... 1 / a[n]) > mid * (1 / a[1] + .. 1 / a[n]) > X。 所以mid具有单调性,因此二分mid即可。
上面是大神的解释
感觉是 二分能取到的最小值
#include <iostream>
#include<cstdio>
#include<string.h>
using namespace std;
double A[];
int main()
{
int n;
while(scanf("%d",&n)==){
for(int i=;i<n;++i)
scanf("%lf",&A[i]);
double X;
scanf("%lf",&X);
double L=,R=X*100.0,mid ,ans;
double eps=1e-;
while(L+eps<=R){
mid=(L+R)/;
double sum=;
for(int i=;i<n;++i)
sum+=mid/A[i];
if(sum<=X){
ans=mid;
L=mid+eps;
}
else {
R=mid-eps;
}
}
printf("%.2lf\n",ans);
}
return ;
}
ac1066的更多相关文章
随机推荐
- 上传控件---淘宝kissy uploader+瀑布流显示
介绍Uploader : Uploader 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性. Uploader是非 ...
- C语言位操作--奇偶校验算法
信息是以比特流的方式传输的,类似01000001.在传输过程中,有可能会发生错误,比如,我们存储了01000001,但是取出来却是01000000,即低位由0变成了1.为了检测到这种错误,我们可以通过 ...
- MFC学习单选框Radio使用
创建单选框Radio ,ID号IDC_RADIO_NAME 1.获取单选框内容 int RadioState = ((CButton *)GetDlgItem(IDC_RADIO_NAME))-> ...
- 预编译 ASP.NET 网站以进行部署
预编译 ASP.NET 网站以进行部署和更新 打开一个命令窗口并定位到包含 .NET Framework 的文件夹. .NET Framework 将安装在以下位置. %windir%\Microso ...
- Linux at 定时任务
命令格式:at[参数][时间] 请注意系统时间是UTC 命令功能:在一个指定的时间执行一个指定任务,只能执行一次.假如该时间已过去,那么就放在第二天执行. /var/spool/mail/这里是任务 ...
- Linux wc
命令参数: -c 统计字节数. -l 统计行数. -m 统计字符数.这个标志不能与 -c 标志一起使用. -w 统计字数.一个字被定义为由空白.跳格或换行字符分隔的字符串. -L 打印最长行的长度. ...
- 通过IFeatureClass 接口查询 IWorkspace, 查询通配符
IWorkspace pWsI = ((IDataset)pFtCls).Workspace 查询通配符 ISQLSyntax psqls = (ISQLSyntax)(((IDataset)pFtC ...
- 计蒜客 30999 - Sum - [找规律+线性筛][2018ICPC南京网络预赛J题]
题目链接:https://nanti.jisuanke.com/t/30999 样例输入258 样例输出814 题意: squarefree数是指不含有完全平方数( 1 除外)因子的数, 现在一个数字 ...
- 【紫书】Undraw the Trees UVA - 10562 递归,字符串
题意:给你画了一颗树,你要把它的前序输出. 题解:读进到二维数组.边解析边输出. 坑:少打了个-1. #define _CRT_SECURE_NO_WARNINGS #include<cstri ...
- CodeForces - 586C Gennady the Dentist 模拟(数学建模的感觉)
http://codeforces.com/problemset/problem/586/C 题意:1~n个孩子排成一排看病.有这么一个模型:孩子听到前面的哭声自信心就会减弱:第i个孩子看病时会发出v ...