有一顆帶邊權的樹,每次操作可以將一條路徑上所有邊權同時異或乙個任意值,求最少多少次操作可以將所有邊權變為0。
(題目保證邊權≤15)
可以發現題目保證了邊權,看到這個數字容易聯想到狀壓(天知道為什麼我沒聯想到)。
由於邊權不是很好處理,所以我們可以將其轉換到點上面去,那麼每乙個點的點權就是與之相連的邊權異或值。
由於異或運算擁有自反性,所以原先路徑的操作就相當於選取兩個點,同時異或乙個值。(路徑中間的每乙個點都被異或兩次,相當於沒有被異或)
很顯然相同權值的點可以兩兩一對先消掉,然後再考慮剩下的節點。
那麼我們設子狀態\(dp[s]\)表示將狀態s消除所需的最小操作次數。(由於相同權值被兩兩消除,所以每一位最多為1)
轉移過程是顯然的。
#include using namespace std;
namespace standardio
templateinline void write (t x)
}using namespace standardio;
namespace project
} return dp[s];
} inline void main () }
int main ()
2020多校聯考 樹
沒有定根就非常的離譜,後來告訴根直接就是 1 先考慮鏈上怎麼做,顯然維護乙個單調棧,求出第乙個比當前數大的位置,然後倍增即可。再放在樹上怎麼做?依舊維護單調棧,但這次不能暴力地彈掉棧頂元素了,因為這樣的複雜度是假的。因為單調棧有單調性,所以直接在單調棧內二分出單調棧彈得不能再彈的位置,然後修改 to...
藍精靈的請求 NOIP多校聯考 2019
對於給定的圖,要求將其分為兩張完全圖。對於一種分法,其值為兩張完全圖邊數之和。求所有分法最小值。建立原圖的補圖,顯然這張圖上相連的都是原來不能呆在同一組裡的。對於補圖中的每乙個聯通塊都進行染色。如果有兩個節點在補圖上相連且顏色一樣,顯然輸出 1。如果他們不相連但是顏色一樣,那麼必須放在同一組裡。如果...
2020五校聯考NOIP 2 矩陣
咕咕咕到現在 題面傳送門 題意 給出乙個 n times n 的矩陣 a 要你求有多少個 n times n 的矩陣 b 滿足 我們考慮條件三。f b 的字典序小於 f a 的字典序 意味著我們可以列舉第乙個 f a i的位置然後統計答案。假設第乙個不相等的位置為 i 行 j 列。那麼矩陣 b 的前...