cf1009F Dominant Indices 长链剖分

终于入坑长链剖分了。以前只知道思想但是不会写代码。(因为有些细节没想明白,突然今早睡醒在梦中理解了x
因为要O(1)O(1)O(1)继承重儿子的信息,我们可以使用主席树/指针/vector来实现。
主席树的话就是直接把重儿子的链直接给就完事了。
指针的话非常轻松,每次直接给这条链分配一块内存,每次重儿子移位就好了,轻儿子的内存重新分配。
vector的话可能需要倒序,有点蛋疼,每次直接使用重儿子的vector,但是插入自己的信息的时候又不能在开头插入,于是只能倒着存信息,每次在结尾处push_back。
于是我扔掉了vector的写法。

这题非常裸,直接上然后维护ans就好了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <vector>

using namespace std;

int const N = 1e6 + 5;

vector<int> G[N];
int dp[N];
int *f[N], *cur = dp;
int len[N], son[N], ans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值