正题

题目链接:https://www.luogu.com.cn/problem/P3600


题目大意

nnn个数的序列,每个数是[1..x][1..x][1..x]中的一个,有qqq个区间[l..r][l..r][l..r],求所有区间最小值的最大值的期望。


解题思路

首先如果一个区间包含别的区间,那么这个区间显然不需要考虑,所以去掉后左端点和右端点同时递增,考虑最大值不超过iii的方案hih_ihi​,定义gig_igi​表示放iii个点,每个区间至少包括一个点的方案。
有hi=gj∗ij∗(x−i)n−jh_i=g_j*i^j*(x-i)^{n-j}hi​=gj​∗ij∗(x−i)n−j

然后fi,jf_{i ,j}fi,j​表示前iii个位置,iii有点,总共放了jjj个点的方案,考虑转移,k−>jk->jk−>j时要保证k∼ik\sim ik∼i这个区间内没有一个完整的区间,预处理好后有fi,j=∑fk,j−1f_{i,j}=\sum f_{k,j-1}fi,j​=∑fk,j−1​

我们发现kkk的取值是一段区间,前缀和优化即可。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=2100,XJQ=666623333;
struct node{ll l,r;
}a[N],b[N];
ll n,x,q,f[N][N],s[N][N],fl[N],fr[N],h[N],g[N],tot,ans;
bool cmp(node x,node y)
{return (x.l==y.l)?(x.r<y.r):(x.l<y.l);}
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%XJQ;x=x*x%XJQ;b>>=1;}return ans;
}
int main()
{scanf("%lld%lld%lld",&n,&x,&q);for(ll i=1;i<=q;i++)scanf("%lld%lld",&b[i].l,&b[i].r);sort(b+1,b+1+q,cmp);for(ll i=1;i<=q;i++){if(i>1&&b[i].l==b[i-1].l)continue;while(tot&&a[tot].r>=b[i].r)tot--;a[++tot]=b[i];}memset(fl,0x3f,sizeof(fl));memset(fr,0xcf,sizeof(fr));for(ll i=1;i<=tot;i++)  for(ll j=a[i].l;j<=a[i].r;j++)fl[j]=min(fl[j],i),fr[j]=max(fr[j],i);ll l=0;fl[0]=fr[0]=0;for(int i=1;i<=n;i++)if(fr[i]<0)fl[i]=l+1,fr[i]=l;else l=max(l,fr[i]);l=0;f[0][0]=s[0][0]=1;for(ll i=1;i<=n;i++){while(l<i-1&&fr[l]+1<fl[i])l++;for(int j=1;j<=i;j++)if(l)f[i][j]=(s[i-1][j-1]-s[l-1][j-1]+XJQ)%XJQ;else f[i][j]=s[i-1][j-1];for(int j=0;j<=i;j++)s[i][j]=(s[i-1][j]+f[i][j])%XJQ;}for(ll i=1;i<=n;i++)if(fr[i]==tot)for(ll j=1;j<=n;j++)(g[j]+=f[i][j])%=XJQ;for(ll i=1;i<=x;i++)for(ll j=1;j<=n;j++)h[i]=(h[i]+g[j]*power(i,j)%XJQ*power(x-i,n-j)%XJQ)%XJQ;ll z=power(power(x,n),XJQ-2);for(ll i=n;i>=1;i--)h[i]=(h[i]-h[i-1]+XJQ)%XJQ;for(ll i=1;i<=n;i++)ans=(ans+h[i]*i%XJQ*z%XJQ)%XJQ;printf("%lld",ans);
}

P3600-随机数生成器【dp,数学期望】相关推荐

  1. luoguP3600 随机数生成器概率与期望Dp

    luoguP3600 随机数生成器 题目描述 sol研发了一个神奇的随机数系统,可以自动按照环境噪音生成真·随机数. 现在sol打算生成n个[1,x]的整数a_1-a_n,然后进行一些询问. q次询问 ...

  2. 聪聪和可可(记忆化dp+数学期望)

    emmmm 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下 ...

  3. bzoj1415 [Noi2005]聪聪和可可【概率dp 数学期望】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1415 noip2016 D1T3,多么痛的领悟...看来要恶补一下与期望相关的东西了. 这是 ...

  4. CF1153F-Serval and Bonus Problem【dp,数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1153F 题目大意 在有nnn个区间的左右端点在[0,l)[0,l)[0,l)范围内随机,求被至少kkk个区间覆 ...

  5. CF1286D-LCC【动态dp,数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1286D 题目大意 nnn个粒子,第iii个在xix_ixi​,速度是viv_ivi​,有pi100\frac{ ...

  6. CF1556F-Sports Betting【状压dp,数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1556F 题目大意 nnn个点的一张竞赛图,每个点有一个权值aia_iai​,(i,j)(i,j)(i,j)之间 ...

  7. P3343-[ZJOI2015]地震后的幻想乡【dp,数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/P3343 题目大意 给出nnn个点的一张无向图,每条边被修复的时间是[0,1][0,1][0,1]的一个随机实数,求 ...

  8. P4707-重返现世【dp,数学期望,扩展min-max容斥】

    正题 题目链接:https://www.luogu.com.cn/problem/P4707 题目大意 nnn个物品,每次生成一种物品,第iii个被生成的概率是pim\frac{p_i}{m}mpi​ ...

  9. P4321-随机漫游【状压dp,数学期望,高斯消元】

    正题 题目链接:https://www.luogu.com.cn/problem/P4321 题目大意 给出nnn个点mmm条边的一张无向图,qqq次询问. 每次询问给出一个点集和一个起点,求从起点出 ...

最新文章

  1. springmvc二十二:annotation-driven标签
  2. 使用Asible批量部署Apache
  3. matlab非线性回归delta,讲解:Delta-sigma、Matlab、analog-to-digital、MatlabPython|SQ
  4. 科学计算机简单编程_是“计算机科学”还是“编程”?
  5. 【HNOI2006】鬼谷子的钱袋
  6. LeetCode 1238. 循环码排列(格雷编码+旋转数组)
  7. xutils找id空指针_xUtils更新到3.0后的基本使用规则
  8. nextcloud icon_聊一聊爱车吉利ICON带给我的用车感受
  9. Java发送邮箱验证码、session校验功能
  10. 区块容量 以太坊 比特币
  11. 有关异或符号'^'在c++编程中的应用
  12. 键盘 计算机代码,键盘钩子示例
  13. 视频编码与封装方式详解
  14. MongoDB 日志管理
  15. 天梯L1-015 跟奥巴马一起画方块 (15 分)(Java)
  16. 史上最硬核全套Java视频教程(学习路线+视频+配套资料)
  17. 2013级学生的学年总结链接
  18. 【AD封装】XH2.54mm座子插件贴片(带3D)
  19. Adobe安装程序无法访问关键文件/目录,请尝试重新安装。(错误代码:41) 解决方法
  20. centos7手工配置ip地址

热门文章

  1. 32位hex转浮点 python_python——int()、hex()、oct()、bin()、float()数值类型转换函数
  2. java 双向链表_java集合类之LinkedList
  3. linux nginx mysql php 5.5._搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程
  4. 11尺寸长宽 iphone_LED显示屏的尺寸规格计算方法
  5. php年月日滚动选择,Unity3d—做一个年月日选择器(Scroll Rect拖动效果优化)— 无限滚动 + 锁定元素...
  6. linux系统故障实验,Linux常见系统故障排除
  7. 如何在MATLAB中把变量填到Word中,matlab数据写入现有excel表格-如何将matlab中变量写入excel...
  8. [PAT乙级]1018 锤子剪刀布
  9. [Java基础]Map集合基础
  10. C++set容器-内置类型指定排序