CF競(jìng)賽題目講解_CF707E(樹(shù)狀數(shù)組的數(shù)組)
2022-08-16 09:55 作者:Clayton_Zhou | 我要投稿
https://codeforces.com/contest/707/problem/E
題意:
給定n行m列的棋盤(pán),棋盤(pán)上有k個(gè)連續(xù)的燈串,每個(gè)燈串的每個(gè)燈都有一個(gè)值,開(kāi)啟的時(shí)候獲取這個(gè)值,關(guān)閉的時(shí)候是0,每個(gè)燈串的所有燈要么一起關(guān),要么一起開(kāi)。
m個(gè)詢問(wèn),switch k,調(diào)整序號(hào)為k的燈串的開(kāi)關(guān)狀態(tài),ask x,y,n,m,詢問(wèn)以(x,y)和(n,m)為對(duì)角頂點(diǎn)的矩形內(nèi)燈泡的權(quán)值之和。
題解:
可以用二維的樹(shù)狀數(shù)組來(lái)維護(hù)這個(gè)棋盤(pán),每個(gè)樹(shù)狀數(shù)組維護(hù)一行,計(jì)算的時(shí)候我們只需暴力求和。
對(duì)于switch操作,不必每次都更新到樹(shù)狀數(shù)組上,因?yàn)閟witch后未必查詢,
也就是說(shuō)可能有switch switch ask的情況,兩次swicth等于沒(méi)有操作,所以我們只需要在查詢的時(shí)候更新樹(shù)狀數(shù)組,
因此我們需要last數(shù)組維護(hù)上一次查詢的時(shí)候的燈串狀態(tài),now數(shù)組維護(hù)現(xiàn)在的狀態(tài),查詢的時(shí)候只要他們不同,再更新樹(shù)狀數(shù)組。
標(biāo)簽: