1. 程式人生 > 其它 >P8252 [NOI Online 2022 提高組] 討論

P8252 [NOI Online 2022 提高組] 討論

不知道為啥覺得這道題巨難捏。

我們嘗試不用比較偏靈感的思路來做一下這道題。


考慮 \(m\le 2\times 10^6\) ,我們可以想到列舉公共的一個元素,這樣我們就只需要考慮元素之間的包含關係即可。

元素的包含關係構成的是一個 \(\text{DAG}\) ,但是如果任意兩兩都存在包含關係的話,必然是以一條鏈的形式存在的。我們相當於是要判斷對於每一個元素作為公共元素時,所對應的集合是否是是鏈的包含關係。

對於一條滿足條件的鏈,我們可以發現,其集合的大小一定是遞增的,所以我們不難想到,如果我們將所有的集合按照 \(\text{size}\) 排序的話,只需要判斷相鄰的兩個是否滿足包含關係(後一個包含前一個)即可。

我們再考慮將所有的鏈並在一起,如果是滿足鏈的包含關係,此時的圖一定是滿足一個外向樹(包含指向被包含)。我們直接 \(\text{check}\) 即可。