USACO 2024 1月月赛
显然最少次数就是叶子个数 \(l\)。那么 \(p_{l+1}\sim p_n\) 都不会用到。
对于 \(p_1\sim p_l\),我们要尽量让它们放在路径上。
枚举每一条根到叶子的路径,选择路径上深度最低的 \(p\) 与这条路径匹配(没有就不匹配了)。
用树剖即可。
先对 \(a\) 去重。前四个数内必然有两个模 \(L\) 同余。
枚举前四个数是哪两个同余,然后枚举它们差的因数为 \(L\),接着 \(O(n)\) 判断:复杂度 \(O(n\sqrt V)\),\(V\) 是值域。
把所有路分成四种:\(x\) 为奇数的垂直路,\(x\) 为偶数的垂直路,\(y\) 为奇数的水平路,\(y\) 为偶数的水平路。
倍增。令一条路的 "父亲" 为它之后第一条与它同方向但奇偶性相反的路。\(row[i][j]\) 为第 \(i\) 条水平路的第 \(2^j\) 级祖先,\(col[i][j]\) 同理。
先让奶牛走到第一个交叉口,然后就可以行列倍增跳过去。