套用第一种点分治模板——先加后减法。
计算过程略微不同,得到deep数组后,计算和为K的路径对数
1.剔除d[i]+d[i]==K的情况
2.遍历一遍后,每种情况计算了两次,最后需要除2
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<limits.h>
#include<queue>
#include<vector>
#define ll long long
#define MP make_pair
#define MP(x,y) make_pair((x),(y))
#define X first
#define Y second
#define oo 0x3f3f3f3f
const ll INF = 0x0fffffffffffffff;
using namespace std;
typedef long long lld;
const int maxn = 10000+10;