[JZOJ5232] 【NOIP2017模拟A组模拟8.5】带权排序
题目
题目大意
有一个数列AAA,数列上的每个数都是在[li,ri][l_i,r_i][li,ri]范围内随机的数。
将这个数列进行稳定排序,得到每个位置在排序后的排名pip_ipi。
f(A)=∑sipif(A)=\sum s_ip_if(A)=∑sipi,求E(f(A))E(f(A))E(f(A))。
思考历程
这种恶心的概率题根本就不知道该怎么思考好吗!
于是打了个暴力,就是枚举所有的情况,然后直接计算。
可是最后不知道为什么爆0了……
正解
E(f(A))=∑siE(pi)E(f(A))=\sum s_i E(p_i)E(f(A))=∑siE(pi)
所以我们只需要求出pip_ipi的期望值就好了。
显然pi=∑j≤i∣aj≤ai∣+∑j>i∣aj<ai∣p_i=\sum_{j\leq i} |a_j \leq a_i|+\sum_{j>i} |a_j< a_i|pi=∑j≤i∣aj≤ai∣+∑j>i∣aj<ai∣
左右两边是类似的,下面只考虑左边的情况。
设ai=xa_i=xai=x。对于每个位置jjj,有三种情况:
1、当x<ljx<l_jx<lj时,位置jjj作出的贡献为000。
2、当lj≤x≤rjl_j \leq x \leq r_jlj≤x≤rj时,位置jjj做出的贡献为x−li+1ri−li+1\frac{x-l_i+1}{r_i-l_i+1}ri−li+1x−li+1。
3、当x>rjx>r_jx>rj时,位置jjj作出的贡献为111。
不解释……
可以将其转化成一个分段函数的图像来理解一下,前后两段都是与xxx轴平行的线,中间的那段是一段一次函数的图像。
将所有jjj的函数全部加起来,枚举xxx,就可以计算E(pi)E(p_i)E(pi)。
接下来我们考虑的问题是如何将所有jjj的函数叠加起来,并且能够快速查询一段区间内的和。
在叠加之后,函数长得一定很奇怪……所以不能用数学方法。
考虑使用线段树,用线段树来维护这些东西。
现在有一个奇怪的操作,在线段树内的一段区间上加某段一次函数的图像。
换个说法就是给这段区间加上一个等差数列。
这个怎么维护呢?
我们发现最重要的一点就是标记,关键是如何维护标记。
合并标记的时候,两段一次函数的都在同一段区间内,仔细想想是可以合并的。
一次函数的普遍形式就是y=kx+by=kx+by=kx+b,合并起来之后就是y=(k1+k2)x+(b1+b2)y=(k_1+k_2)x+(b_1+b_2)y=(k1+k2)x+(b1+b2)。所以可以简单粗暴地相加。
这样维护标记的问题就解决了,整个区间的值都可以维护。
下一个问题就是如何快速地询问,直接维护和就好,在修改的时候加上等差数列的和(千万不要告诉我你不会等差数列求和)。
算法的核心就完成了。
所以我们维护一个这样的线段树,然后从左往右扫,将当前点的贡献(也就是那个分段函数)加入线段树当中,然后区间询问当前点取值范围这一区间内的和,计算E(pi)E(p_i)E(pi)。
再从右往左扫,实际上是类似的。
代码
我才不会告诉你我先打了博客再打代码……
[JZOJ5232] 【NOIP2017模拟A组模拟8.5】带权排序的更多相关文章
- JZOJ 100029. 【NOIP2017提高A组模拟7.8】陪审团
100029. [NOIP2017提高A组模拟7.8]陪审团 Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Got ...
- JZOJ 5328. 【NOIP2017提高A组模拟8.22】世界线
5328. [NOIP2017提高A组模拟8.22]世界线 (File IO): input:worldline.in output:worldline.out Time Limits: 1500 m ...
- JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器
5329. [NOIP2017提高A组模拟8.22]时间机器 (File IO): input:machine.in output:machine.out Time Limits: 2000 ms M ...
- JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)
5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)
5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...
- JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)
5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...
- JZOJ 5230. 【NOIP2017模拟A组模拟8.5】队伍统计
5230. [NOIP2017模拟A组模拟8.5]队伍统计 (File IO): input:count.in output:count.out Time Limits: 1500 ms Memory ...
- 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
[NOIP2017提高A组模拟9.17]信仰是为了虚无之人 Description Input Output Sample Input 3 3 0 1 1 7 1 1 6 1 3 2 Sample O ...
- 【NOIP2017提高A组模拟9.17】猫
[NOIP2017提高A组模拟9.17]猫 题目 Description 信息组最近猫成灾了! 隔壁物理组也拿猫没办法. 信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数) ...
- 【NOIP2017提高A组模拟9.17】组合数问题
[NOIP2017提高A组模拟9.17]组合数问题 题目 Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数. 举个例子,将{1,2,3}拆分成2 个 ...
随机推荐
- CSS3:CSS3 圆角
ylbtech-CSS3:CSS3 圆角 1.返回顶部 1. CSS3 圆角 CSS3 圆角 使用 CSS3 border-radius 属性,你可以给任何元素制作 "圆角". C ...
- delphi基础篇之单元文件
Delphi单元文件 unit MainFrm; {库单元文件头} interface {接口部分由Interface开始implementation结束.声明引用的单元,常量,数据类型 ...
- k8s 对接glusterfs存储
service 与 endpoint 是通过namespace相同,name相同,相互关联的 创建endpoint [root@k8s-master glusterfs]# cat glusterfs ...
- 【LGP5439】【XR-2】永恒
题目 是个傻题 显然枚举每一条路径经过了多少次,如果\(u,v\)在树上不是祖先关系的话经过\((u,v)\)这条路径的路径条数就是\(sum_u\times sum_v\) 于是我们子树大小映射到\ ...
- 2018ICPC焦作 F. Honeycomb /// BFS
题目大意: 给定n m表示一共n行每行m个蜂巢 求从S到T的最短路径 input 1 3 4 +---+ +---+ / \ / \ + +---+ +---+ \ \ / \ + + S +---+ ...
- I Love Palindrome String HDU - 6599 回文树+hash
题意: 输出每个长度下的回文串(这些回文串的左半边也需要是回文串) 题解: 直接套上回文树,然后每找到一个回文串就将他hash. 因为符合要求的回文串本身是回文串,左半边也是回文串,所以它左半边也右半 ...
- java_MySQL未整理
package cn.aikang.MySql; public class MySqlTest {/*数据库的基本概念: 1.数据库的英文单词:DataBase简称:DB 2.什么是数据库:用于存储和 ...
- 4、Docker网络访问
现在我们已经可以熟练的使用docker命令操作镜像和容器,并学会了如何进入到容器中去,那么实际的工作中,我们通常是在Docker中部署服务,我们需要在外部通过IP和端口进行访问的,那么如何访问到Doc ...
- The linux command 之引用
[me@linuxbox ~]$ echo this is a test this is a test shell 会对echo进行单词分割(word splitting)去除多余的空白. [me@l ...
- BlueHost主机建站方案怎样选择?
BlueHost是知名美国主机商,近年来BlueHost不断加强中国市场客户的用户体验,提供多种主机租用方案,基本能够满足各类网站建设需求.下面就和大家介绍一下建站应该怎样选择主机. 1.中小型网站 ...
