[Codeforces 1006.F] Xor-Paths(meet in the middle)
题目
解题思路
最暴力的搜索很容易实现,但是从 $(1,1)$ 到 $(n,m)$ 有 $C_{n+m-2}^{n-1}$ 种走法,大概是 $10^{11}$ 左右的复杂度,显然会 TLE。
我们可以用 meet in the middle 来优化搜索。具体的,从 $(1,1)$ 搜索到一个折半点就停止搜索,再从 $(n.n)$ 搜索到折半点,然后用折半点的信息统计答案。折半点可以选择 $x+y=(n+m)/2$ 的点以保证搜索深度。
对于这道题,在每一个折半点处开一个map,统计第一次搜索后得到的异或值及其出现次数;第二次搜索到同一个折半点时,统计符合答案的异或值的次数即可。
运用 meet in the middle,把这道题的时间复杂度降到了 $10^5$ 数量级。
Code
1 |
|