首页 > 其他分享 >CF1810G The Maximum Prefix

CF1810G The Maximum Prefix

时间:2024-03-13 17:25:07浏览次数:30  
标签:前缀 max CF1810G times Prefix dp 数组 我们 Maximum

## 题意


构造一个长度最多为$n$ 的数组 $a$,其每个元素均为 1 或 -1。生成方式如下:

· 选择任意整数 $k\in[1,n]$ 作为 $a$ 的长度。

· 对于$\forall i\in[1,k]$,有$p_i$ 的概率设
$a_i=1$,有$1-p_i$ 的概率设$a_i=-1$。

在数列被生成后,计算 $s_i=a_1+a_2+a_3+...+a_i$。特别地,$s_0=0$。此时 s 数组的最大前缀和
$S=max_{i=0}^ks_{i\circ}$

现在给定 $n+1$ 个正整数 $h_0,h_1,...,h_n$。$a$ 数组最大前缀和 $S$ 的分数为 $h_{s}$。现在,对于每个 $k$, 你要求
出一个数组长度为$k$ 的期望分数对 $10^9+7$ 取模的结果。
## 解法


首先可以想到很暴力的 $O(n^3)$ 解法。

我们设 $f_{i,j,k}$ 为做到第 $i$ 个位置,当前前缀和为 $j$ 且最大前缀和为 $k$ 。转移式子在此不写。因为我们发现这个解法并优化不了,所以我们需要思考别的方法。

我们思考如果从前往后做不了,不如直接从后往前,那么我们也只需要记录当前最大值就可以了。

设 $f_{i,j} $ 只考虑了 $[i,n]$ 这个区间,最大前缀和为 $j$ 的方案数。因为我们是从后往前枚举的,所以说我们当前缀就是最大前缀,转移式子如下。

$$p_i\times f_{i,j} \to f_{i-1,j+1}$$

$$(1-p_i)\times f_{i,j} \to f_{i-1,max(0,j-1)}$$

但是这样子时间复杂度依旧是 $O(n^3)$ 的,因为我们丢失了单次 $dp$ 可以求出所有答案的性质。

但是我们可以发现,这个 $dp$ 是可以倒着做的。因为我们可以发现,我们每次 $dp$ 的初始值都是 $f_{l,0}=1$ 也就是说我们只是转移次数不一样,系数都是相同的,所以我们可以直接反过来做,求出系数大小就相当于求出答案。

边界情况 $f_{1,i}=d_i$ 。

$$f_{i+1,j}\gets p_i\times f_{i,j+1} +(1-p_i) \times f_{i,max(0,j-1)}$$

最后每个的答案就是 $f_{l,0}$ ,时间复杂度 $O(n^2)$。

标签:前缀,max,CF1810G,times,Prefix,dp,数组,我们,Maximum
From: https://www.cnblogs.com/KAxdd/p/18071088

相关文章

  • mongo Payload document size is larger than maximum of 16777216. 如何处理
    MongoDB中的文档大小限制为16MB(即16777216字节)。如果你遇到Payloaddocumentsizeislargerthanmaximumof16777216的错误,意味着你尝试插入或更新的文档大小超过了MongoDB的限制。要解决这个问题,你可以采取以下几种策略:分割文档:将大型文档拆分成多个较小的文档,并通过它们......
  • Binary Tree Maximum Path Sum
    SourceGivenabinarytree,findthemaximumpathsum.Thepathmaystartandendatanynodeinthetree.ExampleGiventhebelowbinarytree,1/\23Return6.题解1-递归中仅返回子树路径长度题目很短,要求返回最大路径和。咋看一下......
  • @ConfigurationProperties(prefix = GatewayProperties.PREFIX)
    在Spring Boot中,@ConfigurationProperties注解用于将配置文件(如application.properties或application.yml)中的属性绑定到一个Java Bean上。通过指定prefix属性,可以选择性地绑定配置文件中特定前缀下的属性到Bean的字段上。这种方式简化了配置管理,使得配置数据的组织和使用更加灵......
  • 1.Prefix前缀和【模板】
    [[#题目描述|题目描述]][[#输入描述|输入描述]][[#输出描述|输出描述]][[#输入样例1|输入样例1]][[#输出样例1|输出样例1]][[#暴力穷举|暴力穷举]][[#前缀和数组|前缀和数组]]题目描述给定义一个数组a,有q次询问,对于每次询问:给定两个整数l,r,求出${a_l}$$+$${a_{l+1}}$......
  • Maximum And Queries (hard version)
    首先来介绍一下SOSDP看这篇文章解释一下,最开始的初始化for(inti=0;i<(1<<N);i++)f[i]=w[i];就是0/1背包的的初始化,可以模拟一下想一下为啥然后是DP的过程中,注意f[st^(1<<i)]是肯定不会在这一层被更新的(因为(st^(1<<i))&(1<<i)肯定为\(0\)),所以倒序循环还是正序循环是无所谓的......
  • [LeetCode] 2864. Maximum Odd Binary Number
    Youaregivenabinarystringsthatcontainsatleastone'1'.Youhavetorearrangethebitsinsuchawaythattheresultingbinarynumberisthemaximumoddbinarynumberthatcanbecreatedfromthiscombination.Returnastringrepresentin......
  • 24/02/24 CF280D k-Maximum Subsequence Sum
    这题是我在Luogu上的第\(400\)AC!比惊喜更棒的是三倍惊喜!!!登录\(365\)天祭\(400\)AC祭以及元宵祭!这个其实不是很难的黑题,大家可以去写一下啊。那接下来我们先下午休息一下,然后之后再来讲这个挺好的,大家可以把它写一下,锻炼一下。嗯,写了黑题很有成就感,对吧?——lxl24......
  • CF1832B Maximum Sum 题解
    【题目描述】给定一个长度为\(n\)的数列,其中每个元素互不相同,进行\(k\)次操作,每次可以选择删除序列中最小的两个数或最大的一个数。求操作后剩余数的和的最大值。【思路】我们构造一组数据:首先我们看到题目中的一句话:每次可以选择删除序列中最小的两个数或最大的一个数。......
  • CF1857B Maximum Rounding 题解
    题目描述给定一个自然数\(n\),可以对任意一位进行四舍五入,可以进行任意次,求能得到的最大数。(这里的\(n\)没有前导零)思路首先我们发现,如果我们将其中一位进位了,那后面的所有位都会变成\(0\),因此,如果我们进位了两次,那么位置靠后的那次进位,其实是没有用的。所以我们要从高位往......
  • CF1832B Maximum Sum 题解
    【题目描述】给定一个长度为\(n\)的数列,其中每个元素互不相同,进行\(k\)次操作,每次可以选择删除序列中最小的两个数或最大的一个数。求操作后剩余数的和的最大值。【思路】我们构造一组数据:首先我们看到题目中的一句话:每次可以选择删除序列中最小的两个数或最大的一个数。......