欢迎光临散文网 会员登陆 & 注册

CF竞赛题目讲解_CF707E(树状数组的数组)

2022-08-16 09:55 作者:Clayton_Zhou  | 我要投稿

https://codeforces.com/contest/707/problem/E


题意:

给定n行m列的棋盘,棋盘上有k个连续的灯串,每个灯串的每个灯都有一个值,开启的时候获取这个值,关闭的时候是0,每个灯串的所有灯要么一起关,要么一起开。


m个询问,switch k,调整序号为k的灯串的开关状态,ask x,y,n,m,询问以(x,y)和(n,m)为对角顶点的矩形内灯泡的权值之和。


题解:

可以用二维的树状数组来维护这个棋盘,每个树状数组维护一行,计算的时候我们只需暴力求和。


对于switch操作,不必每次都更新到树状数组上,因为switch后未必查询,

也就是说可能有switch switch ask的情况,两次swicth等于没有操作,所以我们只需要在查询的时候更新树状数组,

因此我们需要last数组维护上一次查询的时候的灯串状态,now数组维护现在的状态,查询的时候只要他们不同,再更新树状数组。


CF竞赛题目讲解_CF707E(树状数组的数组)的评论 (共 条)

分享到微博请遵守国家法律