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)!\)

posted @ 2021-09-25 23:14  徐骁远  阅读(51)  评论(0)    收藏  举报