A国:每个人都有一个友善值,当两个A国人的友善值 $a,b$,如果 $a\text{ xor}\text{ }b \bmod 2=1$,那么这两个人都是朋友,否则不是;
B国:每个人都有一个友善值,当两个B国人的友善值 $a,b$,如果 $a\text{ xor}\text{ }b \bmod 2=0$ 或者$a\text{ }or\text{ }b$ 化成二进制有奇数个 $1$,那么两个人是朋友,否则不是朋友。
$A$国显然$0,1,2$人。
然后考虑如何计算枚举到的$B$国的最大团。
可以看出$B$的补图就是一个分奇偶的二分图。
二分图的最大团=补图的最大独立集。,最大独立集=所有顶点数-最小顶点覆盖,
跑个最大流即可。或者时间戳匈牙利。各种剪枝加一加很快的。
代码
1 |
|