5.20 校内模拟
A
分析一下可以得到同一子树是在一个区间之内,递归算下排列数就行了。
B
暴力可过
考虑下凸包+一条直线仍然是一个凸包,单调栈维护。
C
我有独特的建模方式
两两连边显然是不行的,考虑这样一个转化
$ |x1-x2|=max(x1-x2,x2-x1)$
$ |x1-x2|+|y1-y2|=max(x1-x2+y1-y2,x2-x1+y1-y2,x1-x2+y2-y1,x2-x1+y2-y1)$
我们额外建4个中转点表示上面的四种情况,红球和蓝球通过中转点连边,这样边数降到了O(N)
边权就按照上面四种情况的符号连,容量为1,跑最大费用最大流。
由于最大费用最大流的性质,保证了每个匹配都是最大的,因此恰好就是曼哈顿距离取了绝对值符号后的结果。