前缀和专题

基本知识

前缀和的基本知识是sum[i]=sum[i-1]+a[i],这个公式有一个基本要点:需要继承

比如说0001111000,比如说求前i个位置的0的个数,因为中间1的出现,虽然0的个数没有增加,但是需要继承,sum[i]=sum[i-1]

前缀和的作用是对于一个静态的序列,如果询问[L,R]之间的和,那么可以优化到O(q),暴力的话是O(qn),本质上是用空间换时间;

1、平均数

前缀和的裸题,非常简单

2、有序01序列

对于每个位置,维护前面1的个数,维护后面0的个数,接着枚举每个位置

\[ans=min(ans,sum1[i-1]+sum0[n]-sum0[i]) \]

3、三元组

最终状态是形成1 2 3这样的序列,所以我们可以枚举2,找到前面1的前缀和,找到后面3的前缀和,根据乘法原理,就是这个位置的2对答案的贡献

4、石头剪刀布

因为出的序列是一段石头,一段剪刀,一段布,就是把一条线段分成三个部分,有多少种分法?所以我们可以枚举(i,j),i表示石头的终点,j表示剪刀的终点,这样就可以把前一段剪刀的前缀和求出来,这是第一段赢的数量,可以把前一段剪刀的前缀和求出来,这是第一段输的数量,两者相减就是这一段最终的和

5、再分糖果

posted @ 2024-11-18 08:27  xinyimama  阅读(1)  评论(0编辑  收藏  举报