关于树状数组的姿势
来源:互联网 发布:js时间控件webdriver 编辑:程序博客网 时间:2024/05/31 05:28
Q:博主为什么突然会来一个这么SB的算法。
A:当然是为了水一篇博客辣 有什么新发现,顺便补上我欠树状数组的一篇总结。
树状数组
树状数组作为一种数据结构,相比其他数据结构代码清晰简单,这里就不再阐述,它可以用来解决求前缀极值或区间和,并支持插入一个数和区间增减。
(来自蒟蒻的)新姿势
今天参加了某高校的模拟赛,看当场rank1的代码……
一个小时后……
谁来恭喜我发现了一个很有用 (鸡肋)的姿势。
当我们需要多次调用树状数组时,显然是要清数组a的,这时……
蒟蒻:直接memset。
然而神犇都是用时间戳记录的。
什么是时间戳?
时间戳就是记录这是第几次调用树状数组的标志,在修改时如果发现当前的节点的时间戳不在当前时间就提前清零,如果询问时发现当前的节点的时间戳不在当前时间显然需要忽视这个节点,这样的操作类似于一种lazy思想——当修改时才清除当前节点。
这样的话在多次需要树状数组时就可以减少大量的不必要操作,起到十分显著的优化效果。
题外话
时间戳是一种优秀的优化方式,其运用不仅局限于树状数组,在二分图匹配中也有一定的运用,比如BZOJ 1854这道题,裸的二分图匹配,但是普通写法不断TLE。
我们知道二分图匹配每次DFS都要清vis数组,但使用时间戳记录就可以了,标记节点访问的时间,这样判断一个节点是否访问过判断节点记录的时间就可以了,这样起到极大的优化效果。
尽管以上时间戳在算法中的充当的成分并不一样,但是不可否认时间戳的强大
阅读全文
0 0
- 关于树状数组的姿势
- 关于树状数组的一个小问题
- 关于树状数组一些有意思的东西
- 关于树状数组的一些讨论
- 关于树状数组
- 关于树状数组
- 关于“树状数组”
- 关于树状数组
- jzoj5290 【NOIP2017提高组A组模拟8.17】行程的交集 (树上路径交,dfs序+树状数组维护姿势)
- 关于反射的一些姿势
- 关于二分图的姿势
- 关于树状数组的两种最基本的用法
- 树状数组关于区间修改区间求和的问题
- 树状数组的学习
- 树状数组的概念
- 树状数组的理解
- 树状数组的模板;
- 树状数组的模版
- JSP--监听器
- win 下 git 提交代码脚本
- Linux下git使用基础
- 两种分布式锁实现方案(一)
- CSS position 属性分析
- 关于树状数组的姿势
- Django-数据库常用类型与关键字
- JDBC知识
- TypeScript 学习笔记8: Modules
- 白话空间统计二十四:地理加权回归(十)完结篇
- Linux常用指令
- 基本IO操作 、 文本数据IO操作
- ssm集成框架freemarker
- C++前途