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

「LG3600-随机数生成器」题解

P3600 随机数生成器

sol

期望不太方便,转计数。那么就是要求对每个值,最后结果恰为这个值的方案数。

恰好不太好求,考虑差分,转化为至多,那么就是要对每个值求答案不超过这个值的方案数。

要求所有区间区间内最小值的最大值不超过标准值,也就是要求每个区间都得有一个不超过标准值的数。容易将原序列转化为 0-1 序列,再转化为线段覆盖问题:要求放一些点点,使得每个给出的区间内都包含有一个点。求放点方案数。

首先不难发现不存在包含关系的区间,因为小区间满足大区间必然满足。那么现在区间右端点关于左端点不降。

考虑 DP 求这个,设计 \(f(i,j)\) 表示前 \(i\) 个点共选了 \(j\) 个点且钦定选第 \(i\) 个点使得所有左端点不超过 \(i\) 的区间均满足性质的方案数。转移考虑枚举上一个合法点的位置,那么简单预处理出覆盖各个点的最左的区间与最右的区间,则上一个合法点必须位于当前点前最后一个不被当前点覆盖的区间内。这个显然可以简单前缀和优化。

求出 \(f\) 之后找方案数是简单的,枚举标准值 \(v\) 与总放点数 \(i\),有系数 \(i^v(n-i)^{x-v}\),意义显然。最后枚举答案差分得到方案并除总方案数得到期望即可。

code

const int N=2005;int n,x,q,m;
struct node{int l,r;}ns[N],ls[N];
int lb[N],rb[N];int dtl[N<<2],dtr[N<<2],lzl[N<<2],lzr[N<<2];
void build(int x=1,int l=1,int r=n){dtl[x]=lzl[x]=inf;dtr[x]=lzr[x]=-inf;if(l==r)return;int m=l+r>>1;build(x<<1,l,m);build(x<<1|1,m+1,r);
}
void pushdown(int x){chmin(dtl[x<<1],lzl[x]);chmin(dtl[x<<1|1],lzl[x]);chmin(lzl[x<<1],lzl[x]);chmin(lzl[x<<1|1],lzl[x]);chmax(dtr[x<<1],lzr[x]);chmax(dtr[x<<1|1],lzr[x]);chmax(lzr[x<<1],lzr[x]);chmax(lzr[x<<1|1],lzr[x]);lzl[x]=inf,lzr[x]=-inf;
}
void modify(int lq,int rq,int v,int x=1,int l=1,int r=n){if(lq<=l&&r<=rq)return chmin(dtl[x],v),chmin(lzl[x],v),chmax(dtr[x],v),chmax(lzr[x],v),void();int m=l+r>>1;pushdown(x);if(lq<=m)modify(lq,rq,v,x<<1,l,m);if(m<rq)modify(lq,rq,v,x<<1|1,m+1,r);
}
pii query(int k,int x=1,int l=1,int r=n){if(l==r)return {dtl[x],dtr[x]};int m=l+r>>1;pushdown(x);if(k<=m)return query(k,x<<1,l,m);else return query(k,x<<1|1,m+1,r);
}mint f[N][N],s[N][N];
mint g[N],ans;inline void Main(){cin>>n>>x>>q;rep(i,1,q)cin>>ns[i].l>>ns[i].r;sort(ns+1,ns+1+q,[&](node a,node b){if(a.l!=b.l)return a.l<b.l;return a.r<b.r;});int mx=inf;per(i,q,1)if(ns[i].r<mx)mx=ns[i].r,ls[++m]=ns[i];reverse(ls+1,ls+1+m);build();rep(i,1,m)modify(ls[i].l,ls[i].r,i);rep(i,1,n){pii res=query(i);if(res.fir!=inf)lb[i]=res.fir,rb[i]=res.sec;else rb[i]=rb[i-1],lb[i]=rb[i]+1;}f[0][0]=s[0][0]=1;rep(i,1,n)s[i][0]+=s[i-1][0];rep(j,1,n){rep(i,j,n){f[i][j]=s[i-1][j-1]-(ls[lb[i]-1].l-1<0?0:s[ls[lb[i]-1].l-1][j-1]);s[i][j]+=f[i][j];}rep(i,1,n)s[i][j]+=s[i-1][j];}rep(v,1,x)rep(i,1,n)g[v]+=(s[n][i]-s[ls[m].l-1][i])*qpow(v,i)*qpow(x-v,n-i);rep(v,1,x)ans+=v*(g[v]-g[v-1]);put(ans/qpow(x,n));
}
http://www.fuzeviewer.com/news/302/

相关文章:

  • 计算机毕业设计springboot音乐畅听系统 基于Spring Boot框架的智能音乐播放系统编写 Spring Boot驱动的音乐在线欣赏平台构建
  • vue2 封装组件使用 v-mode【el-radio,el-input】
  • P11993 [JOIST 2025] 迁移计划 题解
  • ERP和CRM、SRM、MES之间的关系,怎么理解?
  • 2025年市面上氟碳铝单板品牌、市场氟碳铝单板公司、国内氟碳铝单板生产厂家、2025年氟碳铝单板品牌、口碑好的氟碳铝单板产品综合评测
  • 扩展欧几里德算法
  • 嵌入式基础--第七周作业--OLED显示
  • Luogu P3237 [HNOI2014] 米特运输 题解 [ 蓝 ] [ 树形 DP ] [ 哈希 ]
  • 各个版本的sqlite-jdbc jar下载链接
  • echart - f
  • BongoCat日志搜索程序:正则表达式与高级筛选
  • c# 使用 jwt
  • macro出pin
  • 读书笔记:告别数据冗余!Oracle引用分区让父子表管理如此简单
  • 2025 年 10 月绕包电缆头,熔接电缆头,预制电缆头,冷缩管电缆头厂家最新推荐,产能、专利、环保三维数据透视
  • 2025年浅拾兰花双萃致臻精华油:从成分与技术维度解析其护肤效能
  • 路沿石加工设备厂家有哪些?2025石材机械十大品牌
  • 2025年10月重庆装饰装修公司推荐排行榜:十家企业综合对比与实用指南
  • 工业水泵控制移动终端APP需求于开发
  • 《CSS盒子模型》笔记总结 - 教程
  • MCS-51中断系统
  • 触控感应芯片电容式触摸IC 4通道触控方案VK36N4D
  • 测试领域,苏州永创-STD2000X-半导体分立器件电参数测试仪系统能测试哪些元器件和参数 - FORCREAT
  • 2025年AI IDE的深入对比与推荐排行:从好用到生成效果的转变
  • 20232411 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025 年 10 月进销存管理系统,进销存软件,进销存管理软件公司最新推荐,技术实力与市场口碑深度解析!
  • 常用数据管理工具与平台汇总
  • 2025年10月美国投资移民机构推荐榜:权威机构综合对比分析
  • 2025 年企业级 GPU 服务器,8 卡风扇 GPU 服务器,大模型训练 GPU 服务器厂家最新推荐,技术实力与市场口碑深度解析
  • 揭秘 MCP Streamable HTTP 协议亲和性的技术内幕