B-Donut Drone(循环/分块/DP)
生活随笔
收集整理的這篇文章主要介紹了
B-Donut Drone(循环/分块/DP)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
B - Donut Drone
這是一道神題,其中蘊含的思維很巧妙。
在一個循環(huán)的二維矩陣中,每個點有一個權(quán)值,然后每次一個點只能向右上、正右和右下三個地方中權(quán)值最大的地方移動,要求支持兩類操作,一種是移動k次,一種是修改權(quán)值。
n,m<=3000 q<=3000 k<=1e9
首先由于k的值比較大,對于這種東西有幾種思路。
那么我們從圖論角度思考,可以發(fā)現(xiàn)它是一個內(nèi)向基環(huán)樹森林,那么必然會有環(huán),這就是循環(huán)了。
但是這個環(huán)的長度可以達(dá)到nm的級別,我們還需要優(yōu)化,那么我們可以倍增或者分塊,由于需要修改所以倍增似乎不好維護(hù),那么我們可以考慮分塊,顯然將從左到右一次可以視作一塊,然后我們可以O(shè)(1)直接處理m個跳躍,綜合這兩種方法就可以在O(m)的復(fù)雜度內(nèi)求解了。
然后對于修改,我們需要更改jump數(shù)組,那么可以發(fā)現(xiàn)對于一列上到達(dá)某個點的點總是一個區(qū)間。
總結(jié)
以上是生活随笔為你收集整理的B-Donut Drone(循环/分块/DP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: string(STL)
- 下一篇: [2020多校A层11.18] 三角田地