直接计数其实不好记,不如计数转期望。

令 \(f_i\) 表示点 \(i\) 成为制高点概率,不难发现期望就是 \(\sum f_i\)。

根据定义对于 \(f\) 我们有如下转移 \(f_i = \frac{\sum_{j=l_i}^{r_i} f_j}{r_i-l_i+1}\) 又因为 \(l_i \leq r_i < i\) 所以按照 \(i\) 的顺序转移即可保证正确性,那么用主席树维护转移即可。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 2e5+114;
const int top = 100000000000;
const int mod = 998244353;
int n;
struct Node{
int ls,rs,sum;
}tr[maxn*60];
#define ls(cur)(tr[cur].ls)
#define rs(cur)(tr[cur].rs)
int rt[maxn];
int tot;
void insert(int &cur,int lst,int lt,int rt,int pos,int v){
if(pos<lt||pos>rt){
cur=lst;
return ;
}
if(cur==0) cur=++tot,tr[cur].sum=tr[lst].sum;
tr[cur].sum+=v;
tr[cur].sum%=mod;
if(lt==rt) return ;
int mid=(lt+rt)>>1;
insert(tr[cur].ls,tr[lst].ls,lt,mid,pos,v);
insert(tr[cur].rs,tr[lst].rs,mid+1,rt,pos,v);
}
int query(int cur,int lt,int rt,int l,int r){
if(lt>r||rt<l||cur==0) return 0;
if(l<=lt&&rt<=r) return tr[cur].sum;
int mid=(lt+rt)>>1;
return query(ls(cur),lt,mid,l,r)+query(rs(cur),mid+1,rt,l,r)%mod;
}
int qpow(int a,int b){
if(b==0) return 1;
if(b==1) return a%mod;
int res=qpow(a,b/2);
res=res*res%mod;
if(b%2==1) res=res*a%mod;
return res;
}
int h[maxn],L[maxn],R[maxn],res=1,ans;
signed main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>h[i],h[i]++;
for(int i=2;i<=n;i++) cin>>L[i]>>R[i];
res=res*1;
ans+=1;
insert(rt[1],rt[0],1,top,h[1],1);
for(int i=2;i<=n;i++){
int f=((query(rt[R[i]],1,top,1,h[i])-query(rt[L[i]-1],1,top,1,h[i])+mod)%mod)*qpow((R[i]-L[i]+1)%mod,mod-2)%mod;
res=res*(R[i]-L[i]+1)%mod;
ans=(ans+f)%mod;
insert(rt[i],rt[i-1],1,top,h[i],f);
}
cout<<(ans*res)%mod;
}

P6655 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. Ryght 在 Hugging Face 专家助力下赋能医疗保健和生命科学之旅

    本文是 Ryght 团队的客座博文. Ryght 是何方神圣? Ryght 的使命是构建一个专为医疗保健和生命科学领域量身定制的企业级生成式人工智能平台.最近,公司正式公开了 Ryght 预览版 平台 ...

  2. Sermant在异地多活场景下的实践

    本文分享自华为云社区<Sermant在异地多活场景下的实践>,作者:华为云开源. Sermant社区在1.3.0和1.4.0版本相继推出了消息队列禁止消费插件和数据库禁写插件,分别用于解决 ...

  3. 04 elasticsearch学习笔记-Rest风格说明

    目录 Rest风格说明 关于文档的基本操作 添加数据PUT 查询 修改文档 删除索引或者文档 Rest风格说明 Rest风格说明 method url地址 描述 PUT localhost:9200/ ...

  4. List集合中获取重复元素

    一.方法1 ## 测试数据 List<String> words = Arrays.asList("a", "b", "c", ...

  5. Sublime Text 3 初试牛刀

    每次我在其他视频网站上看学习视频的时候,看着老师用的编辑器高大上档次,而我一般用Notepad,和Dreamweaver去编辑网页,需要每一行代码,打进去,效率低.最近看到sublime编辑器,在网上 ...

  6. python教程3.2:字典

    字典相比较列表,优势:查找key的需求,列表需要遍历,字典查找速度很快,很方便, 定义  特性 查找.增加和修改操作  删除操作 循环操作  全局函数

  7. cesium问题-关于不同时间模型亮度不一致问题

    项目中遇到发布的bim模型在当天不同时间的模型亮度发生变化,尤其是晚上的时候会出现模型很暗.尴了个尬,一度怀疑是自己眼睛有问题,连续几天出现同样的情况,想到可能是时间问题导致的模型亮度不同,于是测试了 ...

  8. uniapp登录板块封装(旧接口getUserInfo)

    点击查看代码 // 授权并获取用户信息 const authorizeAndGetUserInfo = (loginRes) => { uni.getUserInfo({ success(res ...

  9. 在 Chromebook 上使用 Word 的最佳方法

    Splashtop 允许您从 Chromebook 远程控制 Windows 和 Mac 计算机,从而可以访问 Word 的桌面版本和所有文件. 对于远程工作者和学生,Chromebook 可以是一种 ...

  10. warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&f);

    这个是C语言当中常见的错误,意思是 对于输入的scanf参数的内容,没有进行类型判断,所以才会产生这个问题. 解决方法: 1.添加if判断方式 1 if(scanf("%d",&a ...