國慶集訓Day4報告

A. 油箱

這道題我用了一個很神奇的操做完成了。優化

首先,這道題咱們使用二分。判斷有無解。鏈接全部邊權小於等於\(mid\)的邊,判斷全部點是否互相可達。spa

實際上若是全部點都能到達\(1\),而且\(1\)能到達全部點,則說明全部點互相可達。隊列


B. 求和

這道題我使用樹上倍增。class

固然,咱們首先先考慮維護\(suma[u]\)\(sumb[u]\)表明從該點到根節點的全部權值和。發現咱們還能夠維護\(prob_a[u]\)\(prob_b[u]\)用以計算從該點\(u\)到根節點的全部\(a_i*b_j\)。而後分別維護。數據

對於\(u,v\),答案即爲:di

\[prob_a[u]+prob_b[v]-prob_a[lca]-prob_b[lca]-(suma[u]-sum[lca])*sumb[fa[lca]]-(sumb[v]-sumb[lca])*suma[fa[lca]]+(suma[u]-sum[lca])*(sumb[v]-sumb[lca]) \]

這道題啓發我能夠利用維護序列上的操做維護樹上較難處理的操做。思維

最後,別忘開long long!display


C. 染色

題意中有一句話:一個長度不超過k的區間染成相同的顏色,指的是一個(考場期間我就覺得是多個)。數字

首先\(k=1\),互不相同。DP帶走;math

其次,咱們能夠枚舉每個長度不超過\(k\)的子串,分別計算。

接着剛纔的想法,咱們能夠不妨優化一下:預處理DP,接着單調隊列。


D. 數字

題目好評,思惟難題。

一看數據規模,再看好數的定義,第一想法就是旅行商問題。

轉移過程當中花費貌似挺難想的。咱們把每個\(k\)位數看做一個節點,花費即爲節點距離。跑最短路。

舉個例子:\(1234\)能夠向\(2341\)\(2342\)\(2343\)\(2344\)(這四個數若是都不是不知足題意的數據)連邊。

相關文章
相關標籤/搜索