【HDU】3966 Aragorn's Story(树链剖分+线段树)

树链剖分的模板题,思路就不说了, 等做了一些题目之后,在写个总结吧。

先说一下这道题错误的地方。

1、爆栈。看大神的博客才找到解决的方法。

说是hdu的oj是window的系统,容易爆栈

所以在之前应该要手动扩栈。

在代码之前加上:#pragma comment(linker, "/STACK:1024000000,1024000000")就可以了。

2、

是在路径的缩短中写错了。

int fu = top[u], fv = top[v];//这条重链的顶端

一开始写成pre数组,结果就wa了。

/*

第一次栈溢出:添加:#pragma comment(linker, "/STACK:1024000000,1024000000")解决!

*/
#pragma comment(linker, "/STACK:1024000000,1024000000")
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAX 50005
#define ls rt<<1
#define rs ls|1
#define m (l+r)>>1
int sum[MAX << 2];
int p[MAX], head[MAX], posx[MAX], top[MAX], son[MAX], pre[MAX], size[MAX], deep[MAX];
int posx2[MAX];
int cnt, pos;
int n, k, q;
struct edg{
	int v, next;
}edge[MAX<<1];

void addedge(int u, int v)
{
	edge[cnt].v = v;
	edge[cnt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值