当前位置: 首页 > news >正文

2026“钉耙编程”中国大学生算法设计春季联赛(8)1007思路分享(期望)

题意概述

给定 \(n\) 个区间,实数序列 \(a_i\) 在区间 \([l_i,r_i]\) 上服从均匀分布,每个元素生成相互独立,求:

\[\sum_{i=2}^{n}{\left|a_i-a_{i-1} \right|} \]

的期望,模 \(10^9+7\)

思路

如果两区间不交,期望为两区间中点之差的绝对值。

如果两区间完全相同,将区间分成两半,有 \(1/2\) 概率两个点不属于同一个区间,这样就是两区间不交的情况;有 \(1/2\) 概率两个点属于同一区间,那这个问题和原问题是等价的,递归计算即可。此时期望为:

\[len \cdot \sum_{i=1}^{\infty}{\frac{1}{4^i}} = \frac{len}{3} \]

如果两区间不完全相同又有交,则可以分裂成若干区间,这些区间之间要么完全相同,要么不交,独立计算贡献即可。

但要注意,需要特判常数点。

代码中采用递归实现情况三的区间分裂,最多只会递归 \(1\) 次。

时间复杂度 \(\mathcal{O}(n)\)

代码

//author:kzssCCC#include <bits/stdc++.h>
using namespace std;
using ll = long long;const int MOD = 1e9+7;ll qpow(ll a,ll b){ll res = 1;while (b){if (b&1){res = res*a%MOD;}a = a*a%MOD;b >>= 1;}return res;
}
void solve(){int n;cin >> n;vector<pair<int,int>> a(n+1);for (int i=1;i<=n;i++){cin >> a[i].first >> a[i].second;}ll t2 = qpow(2,MOD-2);ll t3 = qpow(3,MOD-2);function<ll(int,int,int,int)> cal = [&](int l1,int r1,int l2,int r2)->ll{if (l1>l2){swap(l1,l2);swap(r1,r2);}if (l1==r1 && l2==r2){return abs(r1-r2);		}else if (l1==r1){ll p = (l2+r2)*t2%MOD;return (p-r1+MOD)%MOD;}else if (l2==r2){if (r2>=r1){ll p = (l1+r1)*t2%MOD;return (r2-p+MOD)%MOD;}	else{ll p1 = (l1+r2)*t2%MOD;ll p2 = (r2+r1)*t2%MOD;ll temp = qpow(r1-l1,MOD-2);return ((r2-l1)*temp%MOD*((r2-p1+MOD)%MOD)%MOD+(r1-r2)*temp%MOD*((p2-r2+MOD)%MOD)%MOD)%MOD;}}if (r1<=l2){ll p1 = (l1+r1)*t2%MOD; ll p2 = (l2+r2)*t2%MOD;return (p2-p1+MOD)%MOD; }if (l1==l2 && r1==r2){return (r1-l1)*t3%MOD; }int l = max(l1,l2);int r = min(r1,r2);vector<pair<int,int>> left,right;if (l1!=l) left.emplace_back(l1,l);left.emplace_back(l,r);if (r!=r1) left.emplace_back(r,r1);if (l2!=l) right.emplace_back(l2,l);right.emplace_back(l,r);if (r!=r2) right.emplace_back(r,r2);ll res = 0;for (int i=0;i<left.size();i++){for (int j=0;j<right.size();j++){res = (res+(left[i].second-left[i].first)*qpow(r1-l1,MOD-2)%MOD*(right[j].second-right[j].first)%MOD*qpow(r2-l2,MOD-2)%MOD*cal(left[i].first,left[i].second,right[j].first,right[j].second)%MOD)%MOD;}}return res;};ll res = 0;for (int i=2;i<=n;i++){res = (res+cal(a[i-1].first,a[i-1].second,a[i].first,a[i].second))%MOD;}cout << res << '\n';
}int main(){ios::sync_with_stdio(false);cin.tie(0);int t;cin >> t;while (t--) solve();return 0;
}
http://www.jsqmd.com/news/835971/

相关文章:

  • 南充广告设计制作安装厂家优选:2026年灯光舞台,演艺主持,泡沫板一站式制作服务商盘点 - 四川华蔓广告有限公司
  • 南充广告公司优选榜单:2026年本地门头招牌,发光字,软膜灯箱现货供应链实力厂商 - 四川华蔓广告有限公司
  • 南京及镇江防水补漏服务商评测:全维度对比解析 - 奔跑123
  • 2026年5月正规的废气环保设备/除尘环保设备厂家推荐江苏环球环境工程集团有限公司 - 品牌鉴赏师
  • 【2026上海GEO优化怎么挑?合适的才是最好的】上海GEO优化公司选型参考:得赢科技核心能力详解 - 得赢
  • 南充广告设计制作安装厂家优选:2026年条幅锦旗,楼顶发光字,户外广告牌一站式制作服务商盘点 - 四川华蔓广告有限公司
  • 南充广告设计制作安装厂家优选:2026年易拉宝,X展架,行架租赁一站式制作服务商盘点 - 四川华蔓广告有限公司
  • 南充广告设计制作安装厂家优选:2026年PVC板雕刻,KT板,车贴一站式制作服务商盘点 - 四川华蔓广告有限公司
  • 贵阳市政工程建设公司如何做线上全网获客?2026年AI搜索推广与GEO优化指南 - 精选优质企业推荐官
  • 贵州实体企业老板如何做全网推广?2026年获客系统与服务商盘点 - 精选优质企业推荐官
  • Claude Skill Creator 2.0 完整上手攻略
  • 企业微信群活码开发-唯一客服企微xscrm源码开发
  • 南充广告设计制作安装厂家优选:2026年警示标识,围挡,展架一站式制作服务商盘点 - 四川华蔓广告有限公司
  • 虚幻游戏设计8个方向
  • 确认服务器被入侵后第一步应该断网还是保留现场用于取证?
  • 跻身全球第一梯队,itc保伦股份入选“2025年全球公共广播TOP3” - 品牌速递
  • 在合肥哪个招聘网站最有效?我是一个刚注册的新公司 - drfdxr
  • Conductor 完整上手攻略
  • 2026年5月评价高的废气处理设备/废气处理厂家推荐江苏环球环境工程集团有限公司 - 品牌鉴赏师
  • 南充广告设计制作安装厂家优选:2026年喷绘写真,平板UV喷印,亚克力字一站式制作服务商盘点 - 四川华蔓广告有限公司
  • 类与对象OOP作业总结
  • 2026年庭院铸铝门厂家推荐:从梯队到避坑,一篇读懂如何选 - Amonic
  • OpenSpec OPSX 完整指南
  • 南充广告设计制作安装厂家优选:2026年花草牌,小区园林标识,亚克力雕刻一站式制作服务商盘点 - 四川华蔓广告有限公司
  • Auto-Memory + CLAUDE.md
  • Ubuntu 服务器如何配置自动安全更新而不导致业务服务中断?
  • 贵州房地产销售行业如何做线上全网获客?2026年推广策略与服务商盘点 - 精选优质企业推荐官
  • 南充广告设计制作安装厂家优选:2026年门头招牌,发光字,软膜灯箱一站式制作服务商盘点 - 四川华蔓广告有限公司
  • 金华铸铝门厂家哪家好?2026年品牌梯队与避坑指南 - Amonic
  • 2026年靠谱的高温线缆厂家/推荐工业高温线缆加工厂/值得推荐的高温线缆厂 - 品牌推广大师