先考慮沒有相同數的情況,那麼每個點會和左邊第乙個比它大的和右邊第乙個比它大的造成1的貢獻,此後再無貢獻
因為沒有相同數所以一對數一定有乙個大的有乙個小的對於小的來說另乙個端點再移動的話就一定不會危險 所以是對的
由於有環,考慮拆掉,正常的方法是在最後乙個之後把串重複一遍
然後就會想到單調佇列(/棧)
但去重很噁心由於拆環導致乙個數左邊和右邊找到的可能一樣,也可能一對數前邊算了一次後邊算了一次
一種方法是對每個數記錄一下左邊和右邊的數是哪個,,,,,
但細節巨多 而且會走上一條解決不了有相同數的不歸路
把有相同數的情況考慮進來:每個數不僅會和左邊第乙個,右邊第乙個比它打的構成貢獻而且和每個和它相等的數( 可能 )會造成額外的貢獻因為端點繼續移動沒有影響
重複的情況更噁心了
考慮如何避免重複:從找到的性質入手,第乙個比它大的,此時移動不了了。
那麼考慮拆環時把最大的放在最後乙個,那麼不會有跨過它的貢獻
前邊即可用單調棧
考慮後邊的:只會和最大的那個可能構成貢獻
有貢獻的前提就是在前面這一對沒有算,中間有更大的,但換成另外乙個弧(從後邊)是合法的
用到了次大值,在次大值之後的由於次大值的阻擋從後邊不能合法, 在它之前的由於次大值的阻擋在前邊不能合法
顯然只有次大值之前的可能造成新貢獻,只要滿足從最後乙個往後掃到次大值之前的元素,同時記錄最大值變數檢驗合法性,統計貢獻,到次大值後break即可
考慮有相同數的情況:在前邊:單調棧解決記錄權值 遇到相等的 乾掉但繼承權值算貢獻
貢獻在於所有在棧中遇到的相等元素互相構成貢獻,所有相等元素和第乙個左邊大的右邊大的構成貢獻
後邊不會有相同數的貢獻因為有的話 假如不是最大值那麼在前邊算過 是最大值的話在前邊也算過(相當與乙個次大值)。
總結:特殊拆環(看題目性質最大最小值放後邊加以限制)
利用性質解決問題
次大值和最大值,次小值和最小值的關係運用
CSP S2019 D1T3 樹上的數
給定乙個大小為 n nn 的樹,它共有 n nn 個結點與 n 1 n 1 n 1 條邊,結點從 1 n 1 sim n 1 n 編號。初始時每個結點上都有乙個 1 n 1 sim n 1 n 的數字,且每個 1 n 1 sim n 1 n 的數字都只在恰好乙個結點上出現。接下來你需要進行恰好 n ...
20191030 csp s模擬T1(三維偏序)
woj4780 題目描述 給定兩個長度為n nn的序列a,b a,ba,b。你需要選擇乙個區間 l,r l,r l,r 使得al ar 0 a l a r ge 0 al ar 0且bl br 0b l b r ge 0 bl br 0。最大化你選擇的區間長度。輸入資料 第一行乙個整數n nn,第二...
2018 10 17 膜你賽 day1T1 分數
題目 題目描述 老虎和蒜頭是好朋友。秋天到了,森林中學又迎來了一年一度的招生季。為了與科技時代接軌,森林中學今年即將使用全新的答題卡。只要考試時學生對答題卡進行規範性的填塗,考試後不用多久就能得到大家考試的成績了。然而,被聘請為顧問的老虎卻犯了難。原來,在數學考試中,往往會出現如 2 3,23這樣的...