「HAOI2015」树上操作(非树剖)
题目链接(luogu)
看到标签::树链剖分,蒟蒻Sy开始发抖,不知所措,但其实,本题只需要一个恶心普通的操作就可以了!!
前提知识:欧拉序
首先我们知道dfs序,就是在dfs过程中,按访问顺序进行编号。
而Eulor序,就是在退出时也加入编号。
举个栗子:

dfs序:1 2 4 5 3
eulor序:1 2 4 4 5 5 2 3 3 1
有些dalao又要问蒟蒻我eulor序有什么用,我们来找下规律:
1~5的路径中经过了1、2、5共3个点,而在eulor序1~第1次出现5的位置
1、2、5只出现了1次,而其他数出现了2次
再试几次后,发现同样成立,看来是一定的我们来简单证明一下
1个点在第2次出现时其子树一定遍历完了,而1-i的链中一定只有上下关系,没有兄弟关系
所以eulor序中出现了2次 或0次(这不是废话吗)的一定不在链上,反之亦然
而我们又可以发现一个节点的子树一定出现在它2次出现之间。
接下来解法就好想了:
操作1:x第1次出现的位置加a,第2次出现的位置加-a
操作2:x第1次至第2次出现的位置,第1次出现的点a,第2次出现的加-a
操作3:输出1~x第1次出现的位置的和(因为出现了2次的点第1次与第2次的和相抵消了)
初始值就把第1次出现的位置赋为vi,第2次赋为-vi,用线段树维护。
但怎么在一个区间,一些加,一些减呢?
dalao:Link-cut tree、splay、AA树,太简单了
蒟蒻:。。。
总所周知,sy是个蒟蒻,不会打高级数据结构,所以这里介绍1种简单方法。
给节点数分正负
例如:
本人手残,不看拉倒委屈一下

(叶子节点左边为eulor序,右边为节点大小。其他节点只有大小)
具体实现看注意!此代码加了防抄袭措施的
「HAOI2015」树上操作(非树剖)的更多相关文章
- 「HAOI2015」「LuoguP3178」树上操作(树链剖分
题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所有点的点权都增 ...
- bzoj 4034: [HAOI2015]树上操作 (树剖+线段树 子树操作)
4034: [HAOI2015]树上操作 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 6779 Solved: 2275[Submit][Stat ...
- 【HAOI2015】树上操作(树链剖分)
题面 Description 有一棵点数为N的树,以点1为根,且树点有边权.然后有M个操作,分为三种: 操作1:把某个节点x的点权增加a. 操作2:把某个节点x为根的子树中所有点的点权都增加a. 操作 ...
- loj#2128. 「HAOI2015」数字串拆分 矩阵乘法
目录 题目链接 题解 代码 题目链接 loj#2128. 「HAOI2015」数字串拆分 题解 \(f(s)\)对于\(f(i) = \sum_{j = i - m}^{i - 1}f(j)\) 这个 ...
- 「HAOI2015」按位或
「HAOI2015」按位或 解题思路 : 这类期望题一眼 \(\text{Min-Max}\) 容斥,只需要稍微推一下如何求 \(E(minS)\) 即可. \[ E(minS) = \frac{1} ...
- 「CQOI2006」简单题 线段树
「CQOI2006」简单题 线段树 水.区间修改,单点查询.用线段树维护区间\([L,R]\)内的所有\(1\)的个数,懒标记表示为当前区间是否需要反转(相对于区间当前状态),下方标记时懒标记取反即可 ...
- BZOJ 4034 [HAOI2015]树上操作 线段树+树剖或dfs
题意 直接照搬原题面 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所 ...
- [HAOI2015]树上操作(树链剖分)
[HAOI2015]树上操作(luogu) Description 题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增 ...
- BZOJ_4034 [HAOI2015]树上操作 【树链剖分dfs序+线段树】
一 题目 [HAOI2015]树上操作 二 分析 树链剖分的题,这里主要用到了$dfs$序,这题比较简单的就是不用求$lca$. 1.和树链剖分一样,先用邻接链表建双向图. 2.跑两遍$dfs$,其实 ...
随机推荐
- .Net IOC框架入门之——CastleWindsor
一.简介 Castle是.net平台上的一个开源项目,为企业级开发和WEB应用程序开发提供完整的服务,用于提供IOC的解决方案.IOC被称为控制反转或者依赖注入(Dependency Injectio ...
- 纯C语言实现线性链表
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct LNode{ ElemT ...
- 基于vue+springboot+docker网站搭建【二】搞定服务器
搞定服务器 双11在阿里云用家人的身份证注册账号,买了两台打折的服务器.2核4G一台3年799块:1核2G一台3年229块.机器配置如下图. 1.买的时候注意相同地区的相同可用区.比如我两台机器都选择 ...
- drf--搜索、过滤、排序组件
目录 drf--搜索.过滤.排序组件 过滤 DjangoFilterBackend 自定义过滤器django-filter模块 自定义过滤类 搜索SearchFilter 排序OrderingFilt ...
- 【fiddler安装】解决“Creation of the root certificate was not successful.”的问题
问题:在安装过fiddler后,会出现“Creation of the root certificate was not successful.”的问题,这个是说证书安装不成功. 原因:在使用Fidd ...
- cs1.6 8倍镜
地图名字包含awp的是狙击场 打开游戏 搜索方法 开镜搜减小,关镜搜增加 分析数据 开关镜,观察数据变动 修改测试 测试结果 类似的:鼠标XY坐标,也是上减下加,左加右减
- 6 Linux用户和用户组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户都必须首相像系统管理员申请账号,然后以这个账号身份进入系统 每个用户账号都拥有一个唯一的用户名和各自的口令 用户在登陆时键入 ...
- MEDICI仿真NMOS器件晶体管语法笔记
MEDICI仿真NMOS器件晶体管 TITLE TMA MEDICI Example 1 - 1.5 Micron N-Channel MOSFET 给本例子取的标题,对实际的模拟无用 COM ...
- metrics-server 安装问题解决
参考: https://www.qikqiak.com/post/install-metrics-server/ git clone https://github.com/kubernetes- ...
- 朱石景 201671010457 团队项目评审&课程学习总结
项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/ ...