5 29 SD省隊培訓D1

2022-04-05 20:14:28 字數 751 閱讀 5594

自閉的一天

先咕一咕(兩天之內一定補上)

繼續咕(一星期之內補上)

四十分做法:

首先,我們發現同乙個點加兩條額外邊是一件非常蠢的事,然後同時,加額外邊也同時意味著講這兩個點在樹上的路徑長度用當前權值代替.那麼題目就轉化成了對與每個\(k\in[0,m]\)求出樹上的邊不相交(因為上面說了,相交是一件很蠢的事)的\(k\)條路徑的最大和.

我們考慮\(dp\),因為點不相交就貪心,有點類似noip2018d1t3

設\(dp_\)表示在以\(i\)為跟的子樹中,選了\(k\)條路徑,能\((1)\)否\((0)\)向上延伸的最大路徑之和.

所謂向上延伸,畫張圖理解一下

紅色為我們選擇的邊左圖是不可延伸,而右圖可以延伸。

那麼知道了這個之後我們想一想該怎麼轉移

\(dp_ = max(dp_+dp_,dp_ + dp_ + e[i ].data)y\in son_x\)

首先第乙個是當\(x\)與\(y\)都沒有鏈頭的時候(我們稱能否向上延伸為鏈頭),肯定是可以結合的

第二個是兩個都有鏈頭,但是兩條合併時,總的鏈數就會減一,而這個減一只能在兒子那上面去減.因為如果減到父親上會影響之後的dp轉移

\(dp_ = \max(dp_+dp_ + e[i].data,dp_ + dp_)\)

轉移1時也分兩種情況,首先是看看鏈頭在那上面即可

2018SD省隊集訓R1 D1

經過每條邊至少一次並且回到原點,我們可以想到尤拉迴路。發現尤拉迴路的特點是每個點度數為偶數,然後我們的目標就是把度數奇數的那些點通過新增一些長度盡量小的邊變成度數為偶數。新增哪些邊呢?不難想到是最小生成樹上的邊,那我們先新增成最小生成樹,其實就是每條邊可以選 不選,每個點的要求被選的相鄰邊是奇數 偶...

2018SD省隊集訓R2 D2

我們並不需要知道相對應位置的數字是不是相等,只要置換之後的hash值相等就行了。hash 函式本身相當於每個位置乘上 x 的若干次方,置換之後只要改變次方的順序就好了。具體來說,設我們的base值是m,一段區間的hash值是 n i 0s i mi i 0nsi mi,然後乙個置換的hash值是 n...

2018SD省隊集訓R2 D6

這是一道簽到題 考慮入度出度平衡的狀態,我們先把所有的邊減成0,然後考慮對於一條有向邊x y,如果有c個,那麼可以連權值為 w,流量為c的,還要連權值是w,流量為inf的,我們從1跑到n的時候,考慮什麼時候dis t 0的時候就結束了,再走下去不會更優 include include include...