摘要: 题目要求根据给定的 $n$ 个点($n\leq2000$)和表示编号在 $[i,j]$($i \le j$)的点是否连通的 $a_{i,j}$($a_{i,j}=\{0,1\}$)构造出一棵合法的树,且保证有解。思路上先考虑小区间再合并到大区间,对于只有 $a_{1,n}=1$ 的情况给出了一种构造方案($n = 3$ 时无解);一般情况则按顺序加点,利用树的连通块性质,当 $a_{i,n}=1$ 时,通过连边($i,n$)等方式合并连通块,采用小到大枚举 $n$、从大到小枚举 $i$ 的方法,可证明其正确性,时间复杂度为 $O(n^2)$。代码实现了上述构造树的过程。 阅读全文
posted @ 2025-02-17 16:16 wing_heart 阅读(32) 评论(0) 推荐(0)