Codeforces 1006 F Xor-Paths
题目传送门
直接暴力\(dfs\)的复杂度是\(\binom{n+m-2}{n-1}\)的,显然不可以接受。
但由于此题求的是异或和恰好等于\(k\),所以可以考虑\(\text{meet-in-the-middle}\),即只\(dfs\)一半,求出到相应点可能的异或和有那些,然后从后一半再一次\(dfs\),到了对应点只需查询\(k\ \text{xor}\ sum\)即可,时间复杂度\(\mathcal O(2^{\frac{n+m-2}{2}})\)。
Submission
类似的题还有之前hb模拟赛的T1:给定一张图,问是否存在哈密尔顿回路的边权和恰好为\(k\)。
做法就是先找与1号点相对的点,再二进制枚举将点分为两个的集合,分别求两个集合内存在的距离有哪些,接着用\(\text{two pointers}\)扫一遍即可。复杂度由\((n-1)!\)变为\(n\binom{n-2}{(n-2)/2}(n/2)!\)。

浙公网安备 33010602011771号