题意:

对于一个序列a,构造一个序列b,使得两个序列,对于任意的区间 [l, r] 的区间最靠近左端点的那个最大值的位置,并且序列 b 满足 0 < bi < 1。

给定一个序列 a ,求序列 b 中所有元素的和的期望。

Sample Input
3
3
1 2 3
3
1 2 1
5
1 2 3 2 1 Sample Output
250000002
500000004
125000001

题解:

若满足题意,则 a 和 b 的笛卡尔树同构。

因为 bi 在 0 到 1 之间,故 bi 的期望值为 1/2 ,所以 b 序列的和的期望值为 n/2。
对于笛卡尔树的每一棵子树,若用sz[i]表示以 i 为根节点的子树的大小,则满足其根节点是子树的最大值的概率为 1/sz[i] 。

所以整棵树满足条件的概率为1 / Πsz[i]。

故总期望值为两个的乘积 n / 2Πsz[i]。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
typedef long long LL;
const int maxn = ;
const int MOD = 1e9+; int a[maxn], lson[maxn], rson[maxn], fa[maxn];
LL dp[maxn], inv[maxn];
LL tmp; LL DP(int id)
{
if (id == ) return ;
if (dp[id]) return dp[id];
dp[id] = DP(lson[id]) + DP(rson[id]) + ;
return dp[id];
} void getinv()
{
inv[] = ;
for (int i = ; i < maxn; i++)
inv[i] = inv[MOD % i] * (MOD - MOD / i) % MOD;
} int main()
{
int t, n;
scanf("%d", &t);
getinv();
for (int ca = ; ca <= t; ca++)
{
scanf("%d", &n);
for (int i = ; i <= n; i++) scanf("%d", &a[i]); stack<int> st;
for (int i = ; i <= n; i++)
lson[i] = rson[i] = fa[i] = dp[i] = ; for (int i = ; i <= n; i++)
{
if (!st.empty() && a[st.top()] < a[i])
{
while (!st.empty() && a[st.top()] < a[i])
tmp = st.top(), st.pop();
lson[i] = tmp, fa[tmp] = i;
}
if (!st.empty()) rson[st.top()] = i, fa[i] = st.top();
st.push(i);
} for (int i = ; i <= n; i++) if (!fa[i]) DP(i); LL ans = n * inv[] % MOD;
for (int i = ; i <= n; i++) ans = ans * inv[dp[i]] % MOD; printf("%lld\n", ans);
}
}

2018 Multi-University Training Contest 1 H - RMQ Similar Sequence(HDU - 6305 笛卡尔树)的更多相关文章

  1. [模板] 笛卡尔树 && RMQ

    话说我noip之前为什么要学这种东西... 简介 笛卡尔树(Cartesian Tree) 是一种二叉树, 且同时具有以下两种性质: 父亲节点的值大于/小于子节点的值; 中序遍历的结果为原序列. 笛卡 ...

  2. HDU - 6305 RMQ Similar Sequence(笛卡尔树)

    http://acm.hdu.edu.cn/showproblem.php?pid=6305 题目 对于A,B两个序列,任意的l,r,如果RMQ(A,l,r)=RMQ(B,l,r),B序列里的数为[0 ...

  3. hdu 6305 RMQ Similar Sequence——概率方面的思路+笛卡尔树

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6305 看题解,得知: 0~1内随机取实数,取到两个相同的数的概率是0,所以认为 b 序列是一个排列. 两个 ...

  4. 2016 Multi-University Training Contest 1 GCD RMQ+二分(预处理)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726 题意:有N(N <= 100,000),之后有Q(Q <= 100,000)个区间查询[ ...

  5. 2018 Nowcoder Multi-University Training Contest 2

    目录 Contest Info Solutions A. run D. monrey G. transform H. travel I. car J. farm Contest Info Practi ...

  6. 2016 Al-Baath University Training Camp Contest-1 H

     Description You've possibly heard about 'The Endless River'. However, if not, we are introducing it ...

  7. 2018 Nowcoder Multi-University Training Contest 1

    Practice Link J. Different Integers 题意: 给出\(n\)个数,每次询问\((l_i, r_i)\),表示\(a_1, \cdots, a_i, a_j, \cdo ...

  8. 2018 Nowcoder Multi-University Training Contest 5

    Practice Link A. gpa 题意: 有\(n\)门课程,每门课程的学分为\(s_i\),绩点为\(c_i\),要求最多删除\(k\)门课程,使得gpa最高. gpa计算方式如下: \[ ...

  9. 2018 Nowcoder Multi-University Training Contest 10

    Practice Link J. Rikka with Nickname 题意: 给出\(n\)个字符串,要求依次合并两个串\(s, t\),满足将\(t\)合并到\(s\)中变成\(r\),使得\( ...

随机推荐

  1. Visual Studio 2015 实用插件推荐

    -1000.EntityFramework Reverse POCO Generator(EF Code First 的必备神器) Reverse engineers an existing data ...

  2. Josn转换

    也是搬的,大家勿喷,贴出来只为了自己记忆查找 需要引用 System.Web.Extensions.dll 这个类库 命名空间: System.Web.Script.Serialization 数据结 ...

  3. python_3 :用python微信跳一跳

    [学习使用他人代码] 2018年01月21日 19:29:02 独行侠的守望 阅读数:319更多 个人分类: Python 编辑 版权声明:本文为博主原创文章,转载请注明文章链接. https://b ...

  4. View模块

    一.应用场景 通过View的类注释,可知,Backbone.view是一个JS构造函数,与DOM中的某一块UI相对应,通过注册模型层数据的监听,可实现视图的自动渲染. Backbone.View模块也 ...

  5. 【干货】Html与CSS入门学习笔记1-3

    从23号开始用了4天时间看完了<Head First Html与CSS>这本书,本书讲解方式深入浅出,便于理解,结合习题,便于记忆,是一本不错的入门书.下面是本书的学习笔记: 一.认识HT ...

  6. [Unity3D] 如何识别屏幕边缘

    出现的问题 Unity3D中长度单位是米 使用Screen.resolutions获取的屏幕信息单位是像素 也就是说,即使获取了屏幕相关信息及参数,也无法把信息转换成可在editor中使用的信息.当时 ...

  7. 网络编程——基于UDP的网络化CPU性能检测

    网络化计算机性能检测软件的开发,可对指定目标主机的CPU利用率进行远程检测,并自动对远程主机执行性能指标进行周期性检测,最终实现图形化显示检测结果. 网络通信模块:(客户端类似,因为udp是对等通信) ...

  8. iframe高度随内容自适应的方法

    我们知道,iframe最大的问题,就是高度的问题,如果你内容的高度是变化,要么你就给你的容器写个固定的高度,如果内容是未知的,显然这个方法并不能达到我们的想要的效果,要么就是通过js来解决这个问题. ...

  9. [转]Cannot deserialize the current JSON array (e.g. [1,2,3]) into type

    string content =[{"id": 3636, "is_default": true, "name": "Unit&q ...

  10. POJ-1274 The Perfect Stall---二分图模板

    题目链接: https://vjudge.net/problem/POJ-1274 题目大意: 有n个奶牛和m个谷仓,现在每个奶牛有自己喜欢去的谷仓,并且它们只会去自己喜欢的谷仓吃东西,问最多有多少奶 ...