【题解】洛谷P5994 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)\)。