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. 第七章移动互联网与移动IP

    第七章移动互联网与移动IP 本章延续前几章节,对该章节内容进行归纳总结. 文章中的Why表示产生的背景,也就是说为什么会产生该技术,What表示该技术是什么,How表示该技术是如何使用的.以下将用字母 ...

  2. NO.02---聊聊Vue提升

    如果本篇有看不明白的地方,请翻阅上一篇文章 上一篇我们讲了如何通过一些简单的动作来改变 store.js 中的数据对象,在实际工作中,这是完全无法满足工作需求的,所以这篇我们来说说如何做一些简单的流程 ...

  3. HDU-2844:Coins(多重背包+二进制优化)

    链接:HDU-2844:Coins 题意:给你n个种类的钱和对应的数量,同统计一下从1到m能够凑成的钱有多少个. 题解:C[i] = 1 + 2 + 4 + ··· + 2^k + a (0 < ...

  4. 测试类异常Manual close is not allowed over a Spring managed SqlSession

    在用Spring 和mybatis整合的 写测试类的时候报出解决办法:在全局配置文件   class="org.mybatis.spring.SqlSessionTemplate" ...

  5. RyuBook1.0案例三:REST Linkage

    REST Linkage 该小结主要介绍如何添加一个REST Link 函数 RYU本身提供了一个类似WSGI的web服务器功能.借助这个功能,我们可以创建一个REST API. 基于创建的REST ...

  6. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 三

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  7. XSS 注入检查点

    如果你有个论坛,一般你会很注意用户发帖的注入问题,往往这个地方不会被注入,因为开发特别照顾.原则上XSS都是用户输入的,但是许多边角还是容易忽略.枚举一些检查点. 分页 分页通用组件获取url,修改p ...

  8. 性能度量RMSE

    回归问题的典型性能度量是均方根误差(RMSE:Root Mean Square Error).如下公式. m为是你计算RMSE的数据集中instance的数量. x(i)是第i个实例的特征值向量 ,y ...

  9. python2/3 发送https请求时,告警关闭方法

    问题: 使用Python3 requests发送HTTPS请求,已经关闭认证(verify=False)情况下,控制台会输出以下错误: InsecureRequestWarning: Unverifi ...

  10. strace 命令

    介绍 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...