2020牛客暑期多校训练营(第九场) Groundhog and Gaming Time
原题
题目描述
样例
输入
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相关推荐
- 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∏bj=c∏d ...
- E Groundhog Chasing Death(2020牛客暑期多校训练营(第九场))(思维+费马小定理+质因子分解)
E Groundhog Chasing Death(2020牛客暑期多校训练营(第九场))(思维+费马小定理+质因子分解) 链接:https://ac.nowcoder.com/acm/contest ...
- 2020牛客暑期多校训练营(第六场)
2020牛客暑期多校训练营(第六场) 额,睡了一下午,直接错过了比赛... 文章目录 A African Sort 题意: 题解: 代码: B Binary Vector C Combination ...
- 2020牛客暑期多校训练营(第四场)
2020牛客暑期多校训练营(第四场) 这场属实有点难受 文章目录 A Ancient Distance B Basic Gcd Problem 题目 代码: C Count New String D ...
- 2020牛客暑期多校训练营(第一场)
文章目录 A B-Suffix Array B Infinite Tree C Domino D Quadratic Form E Counting Spanning Trees F Infinite ...
- 2020牛客暑期多校训练营(第二场)
2020牛客暑期多校训练营(第二场) 最烦英语题 文章目录 A All with Pairs B Boundary C Cover the Tree D Duration E Exclusive OR ...
- 2020牛客暑期多校训练营(第七场)J.Pointer Analysis
2020牛客暑期多校训练营(第七场)J.Pointer Analysis 题目链接 题目描述 Pointer analysis, which aims to figure out which obje ...
- 2020牛客暑期多校训练营(第三场)A.Clam and Fish
2020牛客暑期多校训练营(第三场)A.Clam and Fish 题目链接 题目描述 There is a fishing game as following: The game contains ...
- 2020牛客暑期多校训练营(第五场)——E Bogo Sort
2020牛客暑期多校训练营(第五场)--E Bogo Sort 题目描述 Today Tonnnny the monkey learned a new algorithm called Bogo So ...
- 2020牛客暑期多校训练营(第一场)A B-Suffix Array(后缀数组,思维)
链接:https://ac.nowcoder.com/acm/contest/5666/A 来源:牛客网 题目描述 The BBB-function B(t1t2-tk)=b1b2-bkB(t_1 t ...
最新文章
- Node.js实现服务器端生成Excel文件(xls格式、xlsx格式文件)并弹出下载文件
- Linux设置SSH链接
- 天然气阶梯是按年还是按月_社保断缴了,还有补缴的机会?新规下,今年起按这5种方式处理...
- OpenGL shader class自定义着色器的实例
- duilib学习领悟(4)
- 【ElasticSearch】Es 源码之 UsageService 源码解读
- Oracle 9i和10g安装后的基本环境与服务
- 英语好文22.6.23
- linux输入法中文输入法,RHEL7配置中文输入法-智能拼音
- 齐纳二极管 稳压二极管 SOD123封装 正负区分
- 计算机软件在生物学应用,计算机辅助教学软件在生物教学中的应用
- 图像的模式(RGB和CMYK)、通道(8位、16位、32位)分别有什么作用
- HTML+CSS制作知乎登录页面
- 基于C++和OpenGL (GLUT) 实现太阳系行星系统
- 与第三方Api接口对接需要注意的点
- 用linux模拟彩票摇号器下载,大乐透模拟摇奖器拟选号器
- 超好用的清理软件Wise Disk Cleaner X
- LeetCode1309
- win7资源管理器从计算机开始,Win7系统资源管理器在哪里?
- 算法基础:快速排序题
热门文章
- 截图及录屏工具ShareX
- 无法找到元素 'aop:aspectj-autoproxy' 的声明
- Vue暴露的属性和方法
- java生成word文件带上页码,使用apache poi api创建Word文档时,如何以Y的X格式添加页码?...
- 专访深度学习之父Geoffrey Hinton:人工智能的向量之舞
- visio-制作甘特图工具
- android入门之Activity 后台启动限制
- Jenkins进阶系列之——02email-ext邮件通知模板
- 机器学习笔记(三)——归一化、KD树、数值型特征无量纲化、数值型特征分箱等
- JDK1.8u162以及JDK1.8所有历史版本官网下载地址