zr3.6模拟赛总结

啊 ,是一场精神还好,但是迷之没有状态的比赛 (在错误的idea里疯狂打滚)

感觉还是对ZR有那种刻板印象,所以态度不是很好吧

不犯错的话 应该要有130的

时间安排

7.30-9.00

看题,推了推T1,但是假了

9.00-10.00

T2 50,T3 10

10.00-…

(跑路去写别的了)

题目分析

T1

弱智了,最开始想明白2的操作是改变单调性,本质就是可以选择一个区间,区间内(除端点)的位置全部-2,端点处位置-1。

贪心考虑一个位置和相邻位置匹配一定是最优的。

所以对于偶数个奇数位置的区间来说 只要里面没得0 就一定合法

因此 对于n<=5000,只要 n 2 n^2 n2 预处理+O(1)询问就可以了

预处理的时候 预处理 l l l r r r 的合法答案,记作 f [ l , r ] f [l,r] f[l,r]

记录 l a s , l a s 0 las,las0 laslas0的位置,表示上一个奇数的位置,上一个0出现的位置

a [ i ] a[i] a[i]是偶数 那么 f [ i , j ] = f [ i , j − 1 ] f[i,j]=f[i,j-1] f[i,j]=f[i,j1]

否则,如果 l a s 0 < l a s las0<las las0<las ,那么 f [ i , j ] = f [ i , l a s − 1 ] + 1 f[i,j]=f[i,las-1]+1 f[i,j]=f[i,las1]+1 (1代表 l a s − j las-j lasj 形成一段)

对于 a i > 0 a_i>0 ai>0,预处理 s [ i ] = ∑ j < i s [ j ] + a [ i ] ( m o d 2 ) s[i]=\sum\limits_{j<i} s[j]+a[i] (mod2) s[i]=j<is[j]+a[i](mod2)

f [ i ] [ 0 ] , f [ i ] [ 1 ] f[i][0],f[i][1] f[i][0],f[i][1]分别统计从开头到 i i i s为 0 , 1 0,1 0,1的位置有多少个

考虑奇偶性相同的位置一定可以作为答案的两端

所以每次计算答案,就取一下区间内的 f f f 值,分别记作 x , y x,y x,y

a n s = ( x − 1 ) ∗ x + y ∗ ( y − 1 ) ans=(x-1)*x+y*(y-1) ans=(x1)x+y(y1)

T2

50分是线段树优化,因为只有一次查询,可持久化线段树就好

T3

不会 打暴力qwq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值