原文链接www.cnblogs.com/zhouzhendong/p/UOJ196.html 题解 先离散化,设离散化后的值域为 $[0,m]$ . 首先把问题转化一下,变成:对于每一个位置 $i$ ,求出它最终不超过 $j$ 的方案数. 考虑如何求这个东西. 对于一个固定的 $j$ ,考虑一个这样的过程: 初始时,有若干个区间,两两不相交,且区间内的元素都小于等于 $j$ ,而且每一个区间都不能在满足条件的基础上,向左右任意一侧扩张. 考虑其中的一个区间 $[L,R]$ ,如果出现了操作使得它…
原文链接www.cnblogs.com/zhouzhendong/p/UOJ299.html 前言 不会概率题的菜鸡博主做了一道概率题. 写完发现运行效率榜上的人都没有用心卡常数——矩阵怎么可以用数组呢?矩乘怎么可以用循环呢? 截止2019-05-15暂居运行效率榜一. 题解 首先,根据期望的线性性,容易得知,总期望等于以已知点为界的各个未知段的期望之和加上已知点的和.易知每段区间的期望只和自身转移系数和这段区间两端的已知点信息有关. 考虑到每次加入和删除信息时,只会影响 $O(1)$ 段区间的…
原文链接www.cnblogs.com/zhouzhendong/p/ZJOI2019Day1T2.html 前言 在LOJ交了一下我的代码,发现它比选手机快将近 4 倍. 题解 对于线段树上每一个节点,维护以下信息: 1. 这个点为 1 的概率. 2. 这个点为 0 ,且它有祖先是 1 的概率. 其中,第一种东西在维护了 2. 的情况下十分好求. 第二种东西,只有两类: 1. 一次线段树操作涉及到所有的节点,显然只要乘 0.5 . 2. 某些节点打了标记之后,它的所有子孙都被他影响了.于是我们…
原文链接www.cnblogs.com/zhouzhendong/p/ZJOI2019Day1T2.html 前言 在LOJ交了一下我的代码,发现它比选手机快将近 4 倍. 题解 对于线段树上每一个节点,维护以下信息: 1. 这个点为 1 的概率. 2. 这个点为 0 ,且它有祖先是 1 的概率. 其中,第一种东西在维护了 2. 的情况下十分好求. 第二种东西,只有两类: 1. 一次线段树操作涉及到所有的节点,显然只要乘 0.5 . 2. 某些节点打了标记之后,它的所有子孙都被他影响了.于是我们…
题目链接: NanoApe Loves Sequence Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 262144/131072 K (Java/Others) Problem Description NanoApe, the Retired Dog, has returned back to prepare for the National Higher Education Entrance Examination! In…
传送门 首先,答案等于$$ans=\sum_{i=l}^r\sum_{j=i}^r\frac{sum(i,j)}{C_{r-l+1}^2}$$ 也就是说所有情况的和除以总的情况数 因为这是一条链,我们可以把边也转化成一个序列,用$i$表示$(i,i+1)$这一条边,那么只要把区间的右端点减一即可 .发现下面的$C_{r-l+1}^2$很好计算,考虑怎么计算上面的,转化,我们考虑每条边会被算多少次,那么答案变成$$\sum_{i=l}^r\sum_{j=i}^r{sum(i,j)}=\sum_{i…
传送门 考虑对于每一个位置\(i\),计算所有可能的结果出现的概率. 定义一个区间\([l,r]\)为对于\(x\)的极大区间,当且仅当\(\max \limits _{i=l}^r \{a_i\} \leq x < min\{a_{l-1},a_{r+1}\}\)(其中\(a_0=a_{N+1} = MOD\)) 那么我们需要考虑极大区间是如何缩小的. 考虑到设某一个点恰好为\(x\)的方案数转移还需容斥,不妨这么设状态: 设\(f_{x,p,l,r}\)表示已经进行了\(p\)次操作,且区间…
每个节点被经过的概率即为该区间和/总区间和.那么所需要计算的东西就是每个节点的平方和了.修改对于某个节点的影响是使其增加2sum·l·x+l2x2.那么考虑对子树的影响,其中Σl2是定值,修改后Σsum·l会增加Σl2x.维护一下就好. 懒得纠结爆long long的问题了,被卡90算了. // luogu-judger-enable-o2 // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #include&…
P3924 康娜的线段树 看起来$O(nlogn)$可过其实由于巨大常数是无法通过的 $O(nlogn)$:70pts 我们手玩样例发现 线段树上某个节点的期望值$f[o]=(f[lc]+f[rc])/2+sum[o]$ $s[o]$表示该节点代表的区间和. 每次$Add(l,r,x)$时,每个x对于$f[o]$的贡献是固定的,即$f[o]+=x*k[o]$ 这个$k[o]$可以在建树时预处理. 然鹅卡不过TAT #include<iostream> #include<cstdio>…
Description 小Yuuka遇到了一个题目:有一个序列a_1,a_2,?,a_n,q次操作,每次把一个区间内的数改成区间内的最大值,问 最后每个数是多少.小Yuuka很快地就使用了线段树解决了这个问题.于是充满智慧的小Yuuka想,如果操作是随机 的,即在这q次操作中每次等概率随机地选择一个区间l,r,然后将这个区间内的数改成区间内最大 值(注意这样的区间共有(n(n+1))/2个),最后每个数的期望大小是多少呢?小Yuuka非常热爱随机,所以她给出 的输入序列也是随机的(随机方式见数据…