csp-s102 T1 你相信引力嗎

先考慮沒有相同數的狀況,那麼每一個點會和左邊第一個比它大的和右邊第一個比它大的形成1的貢獻,此後再無貢獻繼承

由於沒有相同數因此一對數必定有一個大的有一個小的對於小的來講另外一個端點再移動的話就必定不會危險 因此是對的隊列

因爲有環,考慮拆掉,正常的方法是在最後一個以後把串重複一遍變量

而後就會想到單調隊列(/棧)方法

但去重很噁心因爲拆環致使一個數左邊和右邊找到的可能同樣,也可能一對數前邊算了一次後邊算了一次統計

一種方法是對每一個數記錄一下左邊和右邊的數是哪一個,,,,,總結

但細節巨多  並且會走上一條解決不了有相同數的不歸路移動

把有相同數的狀況考慮進來:每一個數不只會和左邊第一個,右邊第一個比它打的構成貢獻並且和每一個和它相等的數(   可能  )會形成額外的貢獻由於端點繼續移動沒有影響去重

重複的狀況更噁心了

考慮如何避免重複:從找到的性質入手,第一個比它大的,此時移動不了了。

那麼考慮拆環時把最大的放在最後一個,那麼不會有跨過它的貢獻

前邊便可用單調棧

考慮後邊的:只會和最大的那個可能構成貢獻

有貢獻的前提就是在前面這一對沒有算,中間有更大的,但換成另一個弧(從後邊)是合法的

用到了次大值,在次大值以後的因爲次大值的阻擋從後邊不能合法, 在它以前的因爲次大值的阻擋在前邊不能合法

顯然只有次大值以前的可能形成新貢獻,只要知足從最後一個日後掃到次大值以前的元素,同時記錄最大值變量檢驗合法性,統計貢獻,到次大值後break便可

考慮有相同數的狀況:在前邊:單調棧解決記錄權值   遇到相等的  幹掉但繼承權值算貢獻

貢獻在於全部在棧中遇到的相等元素互相構成貢獻,全部相等元素和第一個左邊大的右邊大的構成貢獻

後邊不會有相同數的貢獻由於有的話 假如不是最大值那麼在前邊算過  是最大值的話在前邊也算過(至關與一個次大值)。

總結:特殊拆環(看題目性質最大最小值放後邊加以限制)

    利用性質解決問題

    次大值和最大值,次小值和最小值的關係運用

相關文章
相關標籤/搜索