题意:每个队伍有个赔率pi,如果你往他身上押x元,它赢了,那么你得到x+(1/pi)x元,否则你一分都得不到。问你最多选几支队伍去押,使得存在一种押的方案,不论你押的那几支队伍谁赢,你都能赚得到钱。

设你往第i支队伍上押ai元,不选的视作零元。

首先可以证明,不论你持有多少钱,不影响最后是否有解;是否有解只跟你往各个队伍上押的比例有关。所以不妨设你持有的钱为常数A。

于是有不等式ai*(1+1/pi)>=A,大胆猜测等号成立时,有最极限的解。于是ai=A/(1+1/pi)。

也就是你往第i支队伍身上押的钱数,占你的总钱数的1/(1+1/pi)。

于是把所有队伍按照1/(1+1/pi)从小到大排序,依次尽量选择即可。

注意!由于精度爆炸,所以要用高精度做分数运算。

import java.util.*;
import java.io.*;
import java.math.*; public class Main{
public static void main(String[] argc){
BigInteger[] A=new BigInteger[105];
BigInteger[] B=new BigInteger[105];
double[] C=new double[105];
int[] vis=new int[105];
String S;
char[] s=new char[105];
Scanner sc = new Scanner (new BufferedInputStream(System.in));
int T=sc.nextInt();
for(int zu=1;zu<=T;++zu){
System.out.printf("Case #%d: ",zu);
int n=sc.nextInt();
for(int i=1;i<=n;++i){
long tA=0,tB=0;
S=sc.next();
int len=S.length();
s=S.toCharArray();
int colon=0;
for(int j=0;j<len;++j){
if(s[j]==':'){
colon=j;
break;
}
}
int pos1=colon-1;
for(int j=0;j<colon;++j){
if(s[j]=='.'){
pos1=j;
}
else{
tA=tA*10+s[j]-'0';
}
}
int pos2=len-1;
for(int j=colon+1;j<len;++j){
if(s[j]=='.'){
pos2=j;
}
else{
tB=tB*10+s[j]-'0';
}
}
for(int j=1;j<=colon-pos1-len+pos2;++j){
tB*=10l;
}
for(int j=1;j<=len-pos2-colon+pos1;++j){
tA*=10l;
}
A[i]=BigInteger.valueOf(tA);
B[i]=A[i].add(BigInteger.valueOf(tB));
C[i]=(double)tA/((double)tA+(double)tB);
}
BigInteger sumA=BigInteger.ZERO,sumB=BigInteger.ONE;
for(int i=1;i<=n;++i){
vis[i]=0;
}
int flag=0;
for(int i=1;i<=n;++i){
double minn=2000000000.0;
int id=0;
for(int j=1;j<=n;++j)if(vis[j]==0){
if(C[j]<minn){
minn=C[j];
id=j;
}
}
vis[id]=1;
sumA=sumA.multiply(B[id]).add(sumB.multiply(A[id]));
sumB=sumB.multiply(B[id]);
if(sumA.compareTo(sumB)>=0){
System.out.println(i-1);
flag=1;
break;
}
}
if(flag==0){
System.out.println(n);
}
// for(int i=1;i<=n;++i){
// System.out.print(A[i]);
// System.out.printf(" ");
// System.out.println(B[i]);
// }
}
sc.close();
}
}

【推导】【贪心】【高精度】Gym - 101194E - Bet的更多相关文章

  1. POJ 2325 Persistent Numbers#贪心+高精度除法

    (- ̄▽ ̄)-* 这道题涉及高精度除法,模板如下: ]; ];//存储进行高精度除法的数据 bool bignum_div(int x) { ,num=; ;s[i];i++) { num=num*+ ...

  2. [NOIp2012] 国王游戏(排序 + 贪心 + 高精度)

    题意 给你两个长为 \(n+1\) 的数组 \(a,b\) ,你需要定义一个顺序 \(p\) (\(p_0\) 永远为 \(0\)) 能够最小化 \[ \max_{i=1}^{n} \frac{\pr ...

  3. P1080 国王游戏 贪心 高精度

    题目描述 恰逢 HH国国庆,国王邀请nn 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 nn 位大臣排成一排,国王站在队伍的 ...

  4. luogu1080 国王游戏(贪心+高精度)

    貌似这道题是碰巧蒙对了贪心的方式..就是把ai*bi越小的放在越前面 (不过也符合直觉) 然后统计答案需要用高精度,然后就调了一年 #include<cstdio> #include< ...

  5. luoguP1080 国王游戏 (贪心+高精度)

    题目链接:https://www.luogu.org/problemnew/show/P1080 参考:https://www.luogu.org/problemnew/solution/P1080 ...

  6. 【NOIP2012提高组】国王游戏 贪心 + 高精度

    题目分析 题目答案不具有单调性,所以不可以二分,转而思考贪心.因为无法确定位置,所以考虑如何才能让对于每一个$1 ~ i$使得$i$的答案最大,即$1 ~ i$最后一个最优.若设对于位置$i$,$a[ ...

  7. P1080 【NOIP 2012】 国王游戏[贪心+高精度]

    题目来源:洛谷 题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王 ...

  8. [noip2012]国王游戏<贪心+高精度>

    题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/ ...

  9. 【贪心】最大乘积-贪心-高精度-java

    问题 G: [贪心]最大乘积 时间限制: 1 Sec  内存限制: 128 MB提交: 34  解决: 10[提交][状态][讨论版] 题目描述  一个正整数一般可以分为几个互不相同的自然数的和,如3 ...

随机推荐

  1. 微信小程序迁移到头条小程序工具

    最近公司需要将微信小程序迁移到头条小程序,比较得知微信和头条小程序的写法类似,只有文件名称不同,相关的指令不同,以及头条在ttml绑定的数据不可使用function,于是就写了node脚本来实现这些重 ...

  2. python 协程嵌套

    import asyncio import time now = lambda: time.time() async def do_some_work(x): print('Waiting: ', x ...

  3. 解决word2016鼠标每点击一下就出现一个保存的圆圈

    问题描述:今天打开word2016时,点击鼠标,随着鼠标会出现一个圆圈,让人看着很不习惯,通过查阅资料和亲自实践,记录在博客中. 由于自己之前装了PowerDesigner,PowerDesigner ...

  4. Java基础1,入门基础知识

    本文知识点(目录): 1.java简介    2.环境的搭建    3.关键字    4.标识符    5.注释    6.常量    7.进制的转换    8.变量    9.数据类型的转换    ...

  5. AssetBundle——外部加载资源Asset

    几篇很不错的文章  AssetBundle创建到使用入门 全面理解Unity加载和内存管理 实用的创建AssetBundle的脚本   相关资源 相关的共享资源下载  本共享包括创建assetbund ...

  6. scrapy爬虫

    a. 配置文件 #settings.py DEPTH_LIMIT = 1 #指定“递归”的层数 ROBOTSTXT_OBEY = False #对方网站规定哪些网址可以爬,这个选项表示不遵循此规定 b ...

  7. Codeforces 799B - T-shirt buying(STL)

    题目链接:http://codeforces.com/problemset/problem/799/B 题目大意:有n件T恤,每件T体恤都分别有价格(每件衣服的价格不重复).前面的颜色.背部的颜色三种 ...

  8. js中的cookie使用和vue-cookie的使用

    在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和客户端交互信息的格式.生存期.使用范围.安全性. 在JavaScrip ...

  9. js中的for循环

    预定义: var arr=[22,33,12,34];//数组(特殊的对象) var obj={ //对象 name:"Jack", age:"99", sex ...

  10. ELK系列--问题汇总(二)

    1.Kibana4 dashboard无法保存拖动的visualization位置 原因: 程序bug,json部分未能及时保存拖动的情况 解决方法: 手动在设置中,手动编辑dashboard的jso ...