点分治:统计长度为K的路径条数

本文介绍了利用点分治策略来统计长度为K的路径数目。通过先加后减法模板,计算 deep 数组后排除d[i]+d[i]=K的路径,并注意到每个符合条件的路径被计算了两次,因此最终结果需除以2。
摘要由CSDN通过智能技术生成

套用第一种点分治模板——先加后减法。
计算过程略微不同,得到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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值