zoukankan      html  css  js  c++  java
  • Luogu 随机数生成器

    随机数生成器

    sol 研发了一个神奇的随机数系统,可以自动按照环境噪音生成真·随机数。

    现在 sol 打算生成 (n)([1,x]) 的整数 (a_1, ..., a_n),然后进行一些询问。(q) 次询问,每次询问 (i) 有两个参数 (l_i)(r_i),sol 会计算 (min_{l_i leq j leq r_i} a_j)(a) 数组中下标在 (l_i, r_i) 之间的数的最小值)。

    最后测试结果会是这些询问得到的结果的最大值。

    sol 进行了很多次实验,现在他想问问你测试结果的期望大小是多少,对 (666623333) 取模。

    (n,x,qle 2000)

    ( m Sol:)

    将期望转为 (sum P(Xge x)),枚举 (x),那么对于 (<x) 的数我们设为 (0),大于的设为 (1),问题等价于求方案数使得至少存在一个区间全 (1)

    将每个区间规定在右端点,我们 Dp 出不存在一个区间全 (1) 的概率,这个条件又等价于区间内至少有一个 (0),设 (f_{i,j}) 表示考虑到位置 (i),离 (i) 最近的 (0) 位置为 (j) 的方案数,那么我们枚举 (i) 处的区间,然后将小于的 (j)(0) 即可。

    转移显然仅分为两种:

    1. 转移到 (f_{i,i}),此时 (i) 处填 (0)
    2. 转移到 (f_{i,j}),此时 (i) 处填 (1)

    前者我们单独转移,后者的转移我们可以考虑通过双指针来维护。通过双指针将非法区间清 (0),然后填入 (1) 等价于区间乘以一个数,注意到是整体乘法,我们不妨打一个乘法标记,然后每次加入数的时候给其除以此值即可。

    复杂度为 (mathcal O((n+q)x))

  • 相关阅读:
    冒泡排序&快速排序
    1252. Cells with Odd Values in a Matrix
    位运算小结
    832. Flipping an Image
    1812. Determine Color of a Chessboard Square
    10、属性、构造函数与析构函数
    09、封装与类成员
    07、面向对象简介
    06、C#异常处理
    03、运算符
  • 原文地址:https://www.cnblogs.com/Soulist/p/13653884.html
Copyright © 2011-2022 走看看