NOI 2015 软件包管理器 题解&代码

简单的树链剖分= =不过第一次写真正意义上的树剖坑了我整整五个小时…写出来的代码也不算模板级别的思路,模板还得再找几道题习惯习惯再整理
**对了= =才没有抄过模板呢…在下的模板都是自己根据写法和记忆的难易自己整理出来的

**调了两天,题目已经忘了,等我去整理一下
给出了一颗以0为根节点的Bool类型树,对于一个节点x有两个操作:
1、将该节点到根节点的路径上所有节点值都修改为1
2、将以该节点为根的子树上的节点全部修改为0
对于每次操作,输出这次被修改的节点个数

**需要特别注意的是线段树节点的空间要开四倍…还有要把dfs序号和节点本身的编号分清= =嗯,还有没想好不要乱写
**0号节点开头总归是不好算的,我把编号全部加一了,新的编号下所有节点有一个不存在的父亲0节点

#include<iostream>
#include<vector>
#include<stdio.h>
#define lson (o<<1)
#define rson ((o<<1)|1)
using namespace std;
const int maxn=100005;
int n,q,fa[maxn],x,ans,tot;
int tree[maxn*4],lazy[maxn*4],pa[maxn],son[maxn],rt[maxn],size[maxn];
int in[maxn],out[maxn],deep[maxn];
vector <int> edg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值