题目描述

Takuru 是一名情报强者,所以他想利用他强大的情报搜集能力来当中间商赚差价。

Takuru 的计划是让 Hinae 帮他去市场上买一个商品,然后再以另一个价格卖掉它。Takuru 会给 Hinae 一定的钱 p​p​。(p​p​ 是一个非负的实数)

这个商品的市场价是一个在 [l, r]​[l,r]​ 内均匀随机的实数。

如果 p \geqslantp⩾ 市场价,那么 Hinae 会买下这个商品,然后私吞剩下的钱。也就是说,Takuru 以 pp 的代价买来了这个商品。

如果 p <p< 市场价,那么 Hinae 既不会买下商品,又不会私吞任何钱。也就是说,Takuru 的利润为 0​0​。

当 Hinae 买下了商品后,Takuru 会生成一个在 [L, R][L,R] 内均匀随机的实数 qq,并把商品以 qq 的价格卖掉。那么 Takuru 的利润就是 q - p​q−p​。

Takuru 想要获得最多的利润,所以你要帮 Takuru 确定给 Hiane 的钱 pp,使得 Takuru 的期望利润最大。请求出最大的期望利润。

 
 

输入描述

第一行两个正整数 ll 和 rr (1\leqslant l < r \leqslant 20001⩽l<r⩽2000)。

第二行两个正整数 LL 和 RR (1\leqslant L < R \leqslant 20001⩽L<R⩽2000)。

输出描述

一个实数,表示最大的期望利润。(四舍五入后保留 44 位小数,输出超过 44 位或少于 44位都会获得 Wrong Answer。)

如果答案为 00,请不要输出多余的负号。

若答案为 vv,保证 v+10^{-6}v+10−6 以及 max(v-10^{-6},0)max(v−10−6,0) 四舍五入后保留 44 位小数的结果不会改变。

样例输入 1

400 1200
600 1800

样例输出 1

200.0000

样例输入 2

1999 2000
1 2

样例输出 2

0.0000

思路:
因为主人公的售价是 L~R 所以 主人公售价的期望是 (L+R)/2
我们给买手的钱是p,那么我们主人公的利润就是 ((L+R)/2-p)
我们知道 期望=值*概率
利润期望=利润值*概率 我们来看下概率,
P必须取到 l和r之间,因为如果p大于r,那么不是最优的选择,因为可以选择r可以产生更好的利益。
而p小于l的话,买手会无法购物商品,所以也不可以。
那么p就在 l和r之间了,
买手能买商品的时候当且仅当 商品的市场价 恰好小于等于p,也就是市场价y小于p时,可以购买,
那么y的范围时 l~p,总范围是l~r,所以概率是 (p-l)/(r-l)
期望就是
((L+R)/2-p)*(p-l)/(r-l)
公式就是一个关于p的二次函数,并且a是小于等于0的,有极大值,我们判定对称轴是否在l到r之间,
如果在,那么函数的极值就是答案,如果不在,那么取区间的左右极限的较大值是答案。
注意处理以下0*负数=-0的情况, 细节见code
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#define ALL(x) (x).begin(), (x).end()
#define rt return
#define dll(x) scanf("%I64d",&x)
#define xll(x) printf("%I64d\n",x)
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define eps 1e-6
#define gg(x) getInt(&x)
#define db(x) cout<<"== [ "<<x<<" ] =="<<endl;
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
ll powmod(ll a,ll b,ll MOD){ll ans=;while(b){if(b%)ans=ans*a%MOD;a=a*a%MOD;b/=;}return ans;}
inline void getInt(int* p);
const int maxn=;
const int inf=0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/
double l,r;
double L,R;
int main()
{
//freopen("D:\\common_text\\code_stream\\in.txt","r",stdin);
//freopen("D:\\common_text\\code_stream\\out.txt","w",stdout); gbtb;
cin>>l>>r;
cin>>L>>R;
double t=(L+R)/2.00;
double k=(r-l);
double a=-1.00/k;
double b=(t+l)/k;
double c=-l*t/k;
double x=-b/(2.00*a);
double ans;
if(x>=l&&x<=r)
{
ans=(*a*c-b*b)/(*a);
// db(a*x*x+b*x+c);
}else
{
ans=a*l*l+b*l+c;
ans=max(ans,a*r*r+b*r+c);
}
ans+=eps;
ans=max(0.0,ans-eps);
cout<<fixed<<setprecision()<<ans<<endl; return ;
} inline void getInt(int* p) {
char ch;
do {
ch = getchar();
} while (ch == ' ' || ch == '\n');
if (ch == '-') {
*p = -(getchar() - '');
while ((ch = getchar()) >= '' && ch <= '') {
*p = *p * - ch + '';
}
}
else {
*p = ch - '';
while ((ch = getchar()) >= '' && ch <= '') {
*p = *p * + ch - '';
}
}
}

Comet OJ - Contest #2 B 她的想法、他的战斗(概率 + 数学)的更多相关文章

  1. Comet OJ - Contest #2简要题解

    Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...

  2. Comet OJ - Contest #2 简要题解

    Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...

  3. Comet OJ - Contest #4--前缀和

    原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...

  4. Comet OJ - Contest #11 题解&赛后总结

    Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...

  5. Comet OJ - Contest #8

    Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...

  6. Comet OJ - Contest #13-C2

    Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...

  7. Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」

    来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...

  8. Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(hard)

    来源:Comet OJ - Contest #13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开 ...

  9. Comet OJ - Contest #5

    Comet OJ - Contest #5 总有一天,我会拿掉给\(dyj\)的小裙子的. A 显然 \(ans = min(cnt_1/3,cnt_4/2,cnt5)\) B 我们可以感性理解一下, ...

  10. Comet OJ Contest #13 D

    Comet OJ Contest #13 D \(\displaystyle \sum_{i=0}^{\left\lfloor\frac{n}{2}\right\rfloor} a^{i} b^{n- ...

随机推荐

  1. DjangoRestFrameWork 版本控制

    DRF的版本控制 为什么需要版本控制 API 版本控制允许我们在不同的客户端之间更改行为(同一个接口的不同版本会返回不同的数据). DRF提供了许多不同的版本控制方案. 可能会有一些客户端因为某些原因 ...

  2. 多层全连接神经网络实现minist手写数字分类

    import torch import numpy as np import torch.nn as nn from torch.autograd import Variable import tor ...

  3. 后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码

    后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码 一.总结 一句话总结: 1.在phpstorm中设置:路径Tools/Deployment/Configuratio ...

  4. sed扩展命令使用

    [root@b ~]# cat f.txt inet addr:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0[root@b ~]# cat ...

  5. leetcode 342. 4的幂(python)

    1. 题目描述 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16输出: true示例 2: 输入: 5输出: false 2. 思路 参考: ...

  6. jest 提示 Unexpected identifier 的解决方案

    概述 今天在玩 jest 的时候,发现用 import 就会报 Unexpected identifier 的错误.查了很久的资料,最后终于解决了. 参考资料:Jest tests can't pro ...

  7. kafka 消费者拉取消息

    本文只跟踪消费者拉取消息的流程.对于 java 客户端, kafka 的生产者和消费者复用同一个网络 io 类 NetworkClient. 入口在 KafkaConsumer#pollOnce 中, ...

  8. Redis存储对象序列化和反序列化

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInpu ...

  9. java中? extends T 和? super T解析

    转:https://blog.csdn.net/qq_25337221/article/details/81669630 PECS原则 最后看一下什么是PECS(Producer Extends Co ...

  10. linux使用ltrace和strace跟踪程序执行过程

    yum install strace yum install ltrace 1.strace  ping -c 1 www.baidu.com 2.ltrace  ping -c 1 www.baid ...