1. 程式人生 > 其它 >【題解】PA2014 Kuglarz

【題解】PA2014 Kuglarz

https://www.luogu.com.cn/problem/P5994

題意

魔術師的桌子上有\(n\)個杯子排成一行,編號為\(1,2,…,n\),其中某些杯子底下藏有一個小球,如果你準確地猜出是哪些杯子,你就可以獲得獎品。

花費\(c_{i,j}\)元,魔術師就會告訴你杯子\(i,i+1,…,j\)底下藏有球的總數的奇偶性。

採取最優的詢問策略,你至少需要花費多少元,才能保證猜出哪些杯子底下藏著球?

\(n\le 2000,c_i\le 10^9\)

題解

神題

題目中可以花錢知道區間\([i,j]\)的和的奇偶性,考慮到區間\([i,j]\)的未知量太多,我們可以進行字首和轉化。

\(s_i=\sum_{i=1}^{n}a_i\)

,則花費\(c_{i,j}\)可以得知\(s_j-s_{i-1}\)的奇偶性。

因為\(n\le 2000\),所以足以獲得任意\([i,j]\)的資訊,考慮對任意\([i,j]\),從\(i\)\(j\)連權值為\(c_{i,j}\)的邊。

那麼只要計算出\(s_1,s_2,...,s_n\)的值,就可以知道答案。

由於區間資訊可以拆分與合併,所以當\(1,2,3,...,n\)全部聯通的時候,就可以獲取所有資訊。跑\(1\)\(n\)的最小生成樹即可。

使用\(prim\)\(kruskal\),時間複雜度為\(O(n^2)\)\(O(n^2\ log\ n)\)