Portal --> broken qwq

Description

  大M成立的怪兽电力公司最近刚建立了一个网站。这个季度共有\(n\)天,第\(i\)天共有\(v[i]\)个用户点击该网站,总的广告价值为\(c[i]\)。     然而大M并不知道该如何计算收入。他定义某一天的收入\((p[i]=min(100*max(v[i..j]),min(c[i..j]))(j>=i)\)。也许\(j\)不同会导致\(p[i]\)不同,大M会选择一个\(j\)使得\(p[i]\)最大。

  大M并不知道该如何算这个季度的每天平均收入。他会随机在\(n\)天中选择\(k\)天\(i_1,i_2...i_k\),则这个季度的每天平均收入就定为\(min(p[i_1],p[i_2]...p[i_k])\)。     你作为他的会计对于他这种计算方法十分不放心。你想要知道在大M的计算下,这个季度的每天平均收入的期望值。

  数据范围:对于100%的数据,\(n<=300000,k<=n,v[i]<=10^7,c[i]<=10^9\)

  

Solution

  首先我们假设我们已经求出了\(p\),那么接下来的答案要怎么算?

​  看到这种最大最小值贡献类的题目。。感觉都有一个比较好的方向就是可以从某一个数作为最值然后反过来计算其贡献

​  比如说在这题里面就是,考虑每一个\(p[i]\)会在多少中选择中有贡献,具体一点就是我们考虑将\(p\)按照从小到大的顺序排列,然后依次从左往右考虑每一个\(p[i]\)的贡献

  对于第\(i\)个位置的\(p\)值,因为这个位置要作为最小值才能有贡献,所以\(i\)前面的数全部都不能选,所以也就是\(\binom {n-i} {k-1}\)种组合(第\(i\)这个位置的数确定要选,然后剩下的\(k-1\)个数只能在后面的\(n-i\)个数里面选),算概率的话就是除以一个总的方案数也就是\(\binom n k\)即可

​  那么现在的问题是,直接求组合数是不行的(没有模数)

  注意到每一个位置乘的系数那个组合数都是\(\binom x {k-1}/\binom n k\)的形式,然后当\(x=n-1\)的时候这个式子是\(=k/n\)的,然后我们发现对于不同的\(i\),在改变的只有\(x\),那我们把这个式子用阶乘的形式写开就发现它可以非常愉快地一路递推回去了(每次\(*(n-i-k+1)/(n-i)\)就可以了)

​   

  然后现在的问题就只剩下怎么求\(p\)了

​  我们观察一下\(p[i]\)的表达式,前半部分是取\(max\)(不递减),后半部分是取\(min\)(不递增),总的又是取\(min\),稍微画一下函数图像之类的就可以发现能更新当前位置的方案一定是前面的\(p\)值或者令题目中的那个\(j\)等于当前位置时候表达式的取值

  所以我们可以直接\(O(n)\)dp一下得到\(p\)

  然后这题就做完啦ovo

  

  代码大概长这个样子

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=300010;
int v[N],c[N],p[N];
long double ans,C;
int n,k; int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif
scanf("%d%d",&n,&k);
for (int i=1;i<=n;++i) scanf("%d",v+i);
for (int i=1;i<=n;++i) scanf("%d",c+i);
p[n]=min(v[n]*100,c[n]);
for (int i=n-1;i>=1;--i){
p[i]=max(p[i+1],100*v[i]);
p[i]=min(p[i],c[i]);
}
sort(p+1,p+1+n);
ans=0; C=(1.0*k)/(1.0*n);
for (int i=1;n-i>=k-1;++i){
ans+=1.0*p[i]*C;
C*=(1.0*n-i-k+1)/(1.0*n-i);
}
printf("%.10Lf\n",ans);
}
/*
input
3 2
3 2 1
300 200 300 output
133.333333
*/

profit的更多相关文章

  1. 【HDU 5855】Less Time, More profit(网络流、最小割、最大权闭合子图)

    Less Time, More profit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

  2. HDU5855 Less Time, More profit(最大权闭合子图)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5855 Description The city planners plan to build ...

  3. (转) Reinforcement Learning for Profit

    Reinforcement Learning for Profit July 17, 2016 Is RL being used in revenue generating systems today ...

  4. UVA 10581 - Partitioning for fun and profit(数论递推)

    10581 - Partitioning for fun and profit 题目链接 题意:给定m, n,表示分配给n个格子,分配m个数字进去,每一个格子最少1,而且序列要是递增的,问第k个字典序 ...

  5. uva 10581 - Partitioning for fun and profit(记忆化搜索+数论)

    题目链接:uva 10581 - Partitioning for fun and profit 题目大意:给定m,n,k,将m分解成n份,然后依照每份的个数排定字典序,而且划分时要求ai−1≤ai, ...

  6. hdu_5585_Less Time, More profit(二分+最大权闭合图)

    题目链接:hdu_5585_Less Time, More profit 题意: 有n个工厂,每建一个工厂要花费vi,需要时间ti,然后有m个商店,每个商店需要在指定的k个工厂中进货,才能盈利,如果其 ...

  7. [Educational Round 59][Codeforces 1107G. Vasya and Maximum Profit]

    咸鱼了好久...出来冒个泡_(:з」∠)_ 题目连接:1107G - Vasya and Maximum Profit 题目大意:给出\(n,a\)以及长度为\(n\)的数组\(c_i\)和长度为\( ...

  8. [Swift]LeetCode826. 安排工作以达到最大收益 | Most Profit Assigning Work

    We have jobs: difficulty[i] is the difficulty of the ith job, and profit[i] is the profit of the ith ...

  9. [LeetCode] Most Profit Assigning Work 安排最大利润的工作

    We have jobs: difficulty[i] is the difficulty of the ith job, and profit[i] is the profit of the ith ...

  10. Maximum profit of stocks

    https://github.com/Premiumlab/Python-for-Algorithms--Data-Structures--and-Interviews/blob/master/Moc ...

随机推荐

  1. Qt-Qt5最新增加程序图标方式

    亲爱的小伙伴吗,还记得原始的Qt4是怎么给运行程序添加图标的么,是不是先准备一个ICON文件,问了在家里建立一个rc文件,在文件里面加上 IDI_ICON1               ICON    ...

  2. AtCoder Grand Contest 026 D - Histogram Coloring

    一列中有两个连续的元素,那么下一列只能选择选择正好相反的填色方案(因为连续的地方填色方案已经确定,其他地方也就确定了) 我们现将高度进行离散化到Has数组中,然后定义dp数组 dp[i][j] 表示前 ...

  3. Echarts-K线图提示框改头换面

    工作: 使用Hbuilder建web工程,加入echarts相关库,根据需要更改K线图及其的提示样式,去除默认提示,使用异步加载echarts的数据,数据格式为json. 需要注意的K线图和5日均线, ...

  4. C语言—栈

    栈的操作:进栈和出栈 #include "stdafx.h" #include "stack.h" #define maxsize 20 typedef int ...

  5. c# 导入第三方插件(例如pdf控件),莫名有时候成功有时候出错

    问题情境: 正如标题所述: 解决办法: 怀疑是adobe acrobat 9 pro安装文件出错:重新安装,成功. 在这过程中,尝试过福听阅读器,adobe reader等,均正常. 注:1.第三方的 ...

  6. 第四次c++作业

    一,GitHub地址 https://github.com/ronghuijun/3Elevators-scheduling 二,命令行和文件读写 百度有时候有点蒙,命令行用的是D:>Eleva ...

  7. 用C++实现简单随机二元四则运算

    让我们想看看二元四则运算都需要实现什么: (1) 定制题目数量 (2) 是否有乘除法 (3) 题目数值范围 (4) 加减有无负数 (5) 除法有无余数 (6) 是否支持分数(真分数.假分数…) (7) ...

  8. Windows Forms编程实战学习:第二章 欢迎使用Visual Studio

    第二章 欢迎使用Visual Studio 1,AssemblyInfo文件 包含程序集的属性,向应用程序添加元数据 [assembly:<attribute>(<setting&g ...

  9. phpcms 思维导图

    原文地址 : https://www.cnblogs.com/fuyunbiyi/archive/2012/03/12/2391253.html

  10. javascript之彻底理解this

    彻底理解this,需要彻底理解函数 函数是复杂类型,存储在堆中.  函数是独立的, 对象中的方法只是对象中有个函数的引用 函数被调用时,调用者会像被调用者提供个上下文环境, 这个环境就是this 构造 ...