【学习笔记】前缀和+差分

「JOISC 2019 Day2」两道料理

我会暴力!!10pts滚粗

我会转化!!记 s a i = ∑ j = 1 i a j , s b i = ∑ j = 1 i b j sa_i=\sum_{j=1}^i a_j,sb_i=\sum_{j=1}^i{b_j} sai=j=1iajsbi=j=1ibj

x i = max ⁡ { j ∣ s a i + s b j ≤ s i } , y i = max ⁡ { j ∣ s b i + s a j ≤ t i } x_i=\max\{j|sa_i+sb_j\le s_i\},y_i=\max\{j|sb_i+sa_j\le t_i\} xi=max{jsai+sbjsi}yi=max{jsbi+sajti}

c i c_i ci表示完成 I O I IOI IOI i i i个步骤后 J O I JOI JOI的完成数目

那么 c i ≥ c i − 1 c_i\ge c_{i-1} cici1,答案是 ∑ i = 1 n p i [ c i ≤ x i ] + ∑ i = 1 m q i [ c y i ≥ i ] = ∑ i = 1 n p i − ∑ i = 1 n p i [ c i ≥ x i + 1 ] + ∑ i = 1 m q i [ c y i ≥ i ] \sum_{i=1}^np_i[c_i\le x_i]+\sum_{i=1}^mq_i[c_{y_i}\ge i]=\sum_{i=1}^np_i-\sum_{i=1}^np_i[c_i\ge x_i+1]+\sum_{i=1}^mq_i[c_{y_i}\ge i] i=1npi[cixi]+i=1mqi[cyii]=i=1npii=1npi[cixi+1]+i=1mqi[cyii]

d p j dp_j dpj表示完成 J O I JOI JOI j j j个步骤的最大评分。转移的本质是对若干段后缀加一个值,然后取前缀 max ⁡ \max max

发现前缀 max ⁡ \max max可以暴力做。维护其差分序列,可以用 s e t set set模拟,具体 ( l , x ) (l,x) (l,x)表示 l l l位置的差分序列是 x x x。如果 x < 0 x<0 x<0那么删掉这个位置,然后让后继的差分 + x +x +x

复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)

第一步没转化出来就很尴尬

AC Code

Juju and Binary String

巧妙的题目。

将字符串 s s s拼成一个环,那么一定存在长度 m m m的子段满足条件。因此答案不超过 2 2 2

证明:设 a i a_i ai表示 [ i , i + m − 1 ] [i,i+m-1] [i,i+m1] 1 1 1的数目。记 p p p表示原串中 1 1 1的数目, t o t = p m n tot=\frac{pm}{n} tot=npm 。注意到 ∣ a i − a i − 1 ∣ ≤ 1 |a_i-a_{i-1}|\le 1 aiai11,因此我们只需要证明 min ⁡ ( a i ) ≤ t o t ≤ max ⁡ ( a i ) \min(a_i)\le tot\le \max(a_i) min(ai)totmax(ai) 。证明考虑 ∑ i = 1 n a i = m × p \sum_{i=1}^na_i=m\times p i=1nai=m×p

「EC Final 2018」Exotic … Ancient City

不会不会不会

我会转化!!问题转化为求生成树上 ≤ w \le w w的边的数目

显然我们只关心 ( i , i + 1 ) (i,i+1) (i,i+1)层的连通性 并不显然

那么维护大小为 2 n 2n 2n的并查集。递推到下一层时,继承了上一层的连通性,并且若上一层右部图 ( u , v ) (u,v) (u,v)联通,则下一层左部图 ( u , v ) (u,v) (u,v)也联通。

看起来很玄学。并查集时设右部图为根。

具体看实现 AC Code

Frequency Problem

结论题。

我会转化!!最优区间的众数 x x x一定包含全局众数。

那么枚举另一个众数 y y y,可以前缀和优化到 O ( n a ) O(na) O(na)

我会优化!!

对于出现次数 ≥ n \ge \sqrt{n} n 的,还是前缀和优化,复杂度 O ( n n ) O(n\sqrt{n}) O(nn )

对于出现次数 < n <\sqrt{n} <n 的,枚举区间里全局众数的出现次数 i i i,判断其极大区间是否存在另一个数的出现次数不少于 i i i,复杂度 O ( n n ) O(n\sqrt{n}) O(nn )

这样可以通过Hard Version。

Mobile Phone Network


__EOF__

本文作者仰望星空的蚂蚁
本文链接https://www.cnblogs.com/cqbzly/p/17530104.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   仰望星空的蚂蚁  阅读(8)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2021-08-16 【题解】[COCI2020-2021#2] Svjetlo
点击右上角即可分享
微信分享提示