题解:洛谷 P3029 [USACO11NOV] Cow Lineup S
2026/8/22 12:30:01
简单说:SVD 能给出零空间,是因为任何矩阵的右奇异向量中,对应奇异值为 0 的那些列正好张成该矩阵的零空间。下面针对 bearing vector 的情况具体解释。
cpp
Eigen::JacobiSVD<Eigen::MatrixXd, Eigen::HouseholderQRPreconditioner> svd_f(f_current.transpose(), Eigen::ComputeFullV); // 对 f^T (1x3) 做 SVD nullspaces[i] = svd_f.matrixV().block(0, 1, 3, 2); // 取 V 的后面两列(索引 1,2)