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

posted @ 2021-11-04 20:57  hzy1  阅读(51)  评论(4编辑  收藏  举报