原题
题目描述

样例
输入

6
2 2
1 2
1 4
1 5
3 5
3 6

输出

405536771

思路
求期望可以用累加每种情况对期望的贡献求得,本题就是用的这个思路。
线段的交取决于最大的左端点以及最小的右端点,同时维护两个东西比较困难。
所以我们先按照线段左端点从大到小排序,存在数组tltltl中,按照线段右端点从大到小排序,存在数组trtrtr中。同时还可以离散化一下,节省一下复杂度,然后构建线段树,然后做的操作:::

  • 遍历区间[i,i+1][i,i+1][i,i+1],维护包含该区间的线段的交集的期望。这个期望通过计算所有区间的贡献和。
  • 从mmm个线段,找出aaa个线段包含区间[i,i+1][i,i+1][i,i+1]。计算这aaa个线段的交集的期望,等于每个区间的贡献总和。
  • aaa个线段,有bbb个线段覆盖区间[j,j+1][j,j+1][j,j+1],则区间[j,j+1][j,j+1][j,j+1]的贡献===长度×××(2(2(2b-1) ÷÷÷ 222n。其中减111和除以222n的操作可以在统计完之后最后去做。
  • 最后除以222n得到期望,这一步可以用快速幂做,其中除以222n要用到逆元。
    代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=2e6+5,mod=998244353,inf=1e9+1,n2=(mod+1)/2;
int n,m=2,t1=1,t2=1,l[maxn],r[maxn],tl[maxn],tr[maxn];
ll ans,p[maxn*2],a[maxn*2],b[maxn*2];
bool cmpl(int x,int y){return l[x]<l[y];}
bool cmpr(int x,int y){return r[x]<r[y];}
void bd(int x,int l,int r)
{a[x]=p[r+1]-p[l];b[x]=1;if(l==r)return;int mid=l+r>>1;bd(x*2,l,mid);bd(x*2+1,mid+1,r);
}
void f(int x,int l,int r,ll y,int L,int R)
{if(l<=L&&r>=R){a[x]=a[x]*y%mod;b[x]=b[x]*y%mod;return;}int mid=(L+R)>>1;if(l<=mid)f(x*2,l,r,y,L,mid);if(r>mid)f(x*2+1,l,r,y,mid+1,R);a[x]=(a[x*2]+a[x*2+1])*b[x]%mod;
}
ll ksm(ll a,ll b){ll c=1;while(b){if(b&1)c=c*a%mod;b>>=1;a=a*a%mod;}return c;}
int main()
{scanf("%d",&n);p[1]=0;p[2]=inf;for(int i=1;i<=n;i++)scanf("%d%d",&l[i],&r[i]),p[++m]=l[i],p[++m]=++r[i];sort(p+1,p+m+1);m=unique(p+1,p+m+1)-p-1;bd(1,1,m-1);for(int i=1;i<=n;i++)l[i]=lower_bound(p+1,p+m+1,l[i])-p,r[i]=lower_bound(p+1,p+m+1,r[i])-p,tl[i]=i,tr[i]=i;sort(tl+1,tl+n+1,cmpl);sort(tr+1,tr+n+1,cmpr);for(int i=1;i^m;i++){while(t1<=n&&l[tl[t1]]<=i)f(1,l[tl[t1]],r[tl[t1]]-1,2,1,m-1),t1++;while(t2<=n&&r[tr[t2]]<=i)f(1,l[tr[t2]],r[tr[t2]]-1,n2,1,m-1),t2++;ans=(ans+a[1]*(p[i+1]-p[i]))%mod;}ans=(ans+mod-1ll*inf*inf%mod)%mod;printf("%lld",ans*ksm(n2,n)%mod);
}

2020牛客暑期多校训练营(第九场) Groundhog and Gaming Time相关推荐

  1. 2020牛客暑期多校训练营(第九场)E题 Groundhog Chasing Death

    题意 计算 ∏ i = a b ∏ j = c d g c d ( x i , y j ) \prod_{i=a}^{b}\prod_{j=c}^{d}gcd(x^i,y^j) i=a∏b​j=c∏d ...

  2. E Groundhog Chasing Death(2020牛客暑期多校训练营(第九场))(思维+费马小定理+质因子分解)

    E Groundhog Chasing Death(2020牛客暑期多校训练营(第九场))(思维+费马小定理+质因子分解) 链接:https://ac.nowcoder.com/acm/contest ...

  3. 2020牛客暑期多校训练营(第六场)

    2020牛客暑期多校训练营(第六场) 额,睡了一下午,直接错过了比赛... 文章目录 A African Sort 题意: 题解: 代码: B Binary Vector C Combination ...

  4. 2020牛客暑期多校训练营(第四场)

    2020牛客暑期多校训练营(第四场) 这场属实有点难受 文章目录 A Ancient Distance B Basic Gcd Problem 题目 代码: C Count New String D ...

  5. 2020牛客暑期多校训练营(第一场)

    文章目录 A B-Suffix Array B Infinite Tree C Domino D Quadratic Form E Counting Spanning Trees F Infinite ...

  6. 2020牛客暑期多校训练营(第二场)

    2020牛客暑期多校训练营(第二场) 最烦英语题 文章目录 A All with Pairs B Boundary C Cover the Tree D Duration E Exclusive OR ...

  7. 2020牛客暑期多校训练营(第七场)J.Pointer Analysis

    2020牛客暑期多校训练营(第七场)J.Pointer Analysis 题目链接 题目描述 Pointer analysis, which aims to figure out which obje ...

  8. 2020牛客暑期多校训练营(第三场)A.Clam and Fish

    2020牛客暑期多校训练营(第三场)A.Clam and Fish 题目链接 题目描述 There is a fishing game as following: The game contains ...

  9. 2020牛客暑期多校训练营(第五场)——E Bogo Sort

    2020牛客暑期多校训练营(第五场)--E Bogo Sort 题目描述 Today Tonnnny the monkey learned a new algorithm called Bogo So ...

  10. 2020牛客暑期多校训练营(第一场)A B-Suffix Array(后缀数组,思维)

    链接:https://ac.nowcoder.com/acm/contest/5666/A 来源:牛客网 题目描述 The BBB-function B(t1t2-tk)=b1b2-bkB(t_1 t ...

最新文章

  1. Node.js实现服务器端生成Excel文件(xls格式、xlsx格式文件)并弹出下载文件
  2. Linux设置SSH链接
  3. 天然气阶梯是按年还是按月_社保断缴了,还有补缴的机会?新规下,今年起按这5种方式处理...
  4. OpenGL shader class自定义着色器的实例
  5. duilib学习领悟(4)
  6. 【ElasticSearch】Es 源码之 UsageService 源码解读
  7. Oracle 9i和10g安装后的基本环境与服务
  8. 英语好文22.6.23
  9. linux输入法中文输入法,RHEL7配置中文输入法-智能拼音
  10. 齐纳二极管 稳压二极管 SOD123封装 正负区分
  11. 计算机软件在生物学应用,计算机辅助教学软件在生物教学中的应用
  12. 图像的模式(RGB和CMYK)、通道(8位、16位、32位)分别有什么作用
  13. HTML+CSS制作知乎登录页面
  14. 基于C++和OpenGL (GLUT) 实现太阳系行星系统
  15. 与第三方Api接口对接需要注意的点
  16. 用linux模拟彩票摇号器下载,大乐透模拟摇奖器拟选号器
  17. 超好用的清理软件Wise Disk Cleaner X
  18. LeetCode1309
  19. win7资源管理器从计算机开始,Win7系统资源管理器在哪里?
  20. 算法基础:快速排序题

热门文章

  1. 截图及录屏工具ShareX
  2. 无法找到元素 'aop:aspectj-autoproxy' 的声明
  3. Vue暴露的属性和方法
  4. java生成word文件带上页码,使用apache poi api创建Word文档时,如何以Y的X格式添加页码?...
  5. 专访深度学习之父Geoffrey Hinton:人工智能的向量之舞
  6. visio-制作甘特图工具
  7. android入门之Activity 后台启动限制
  8. Jenkins进阶系列之——02email-ext邮件通知模板
  9. 机器学习笔记(三)——归一化、KD树、数值型特征无量纲化、数值型特征分箱等
  10. JDK1.8u162以及JDK1.8所有历史版本官网下载地址