摘要: 树状数组可以说是一种特殊的线段树,他们有共同的点,BIT通过lowbit来控制线段的长度,可以用于单点修改区间查询,单点查询区间修改,逆序对等等。这里介绍这三种方法来简单描述一下。 一:单点修改区间查询。 1 #include<bits/stdc++.h> 2 using namespace std 阅读全文
posted @ 2021-06-08 23:39 Dydong 阅读(106) 评论(0) 推荐(0) 编辑
摘要: Huffman树是一种为了节省空间的更具字符的频率而构成的一种树。 字符 a b c d e f g 频率 5 4 2 1 2 1 4 编码 10 111 000 0010 110 0011 01 此树思路是利用优先队列和向后扩展节点来满足新增节点然后dfs对树进行遍历。 1 #include<bi 阅读全文
posted @ 2021-06-03 20:01 Dydong 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 背包九讲典型DP,我们如果把背包问题从图论角度上来看,因为它并不存在后效性所以我们可以把它看成是一种DAG问题,从当前点去延伸,对每一个点做一次最优解。 因此有人说这就相当于递推(DFS)加剪枝加IDA*加......就形成了DP。 对于背包问题,经过总结以后可以分为九类: 01背包 完全背包 多重 阅读全文
posted @ 2021-05-13 22:02 Dydong 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 线段树??这是一个什么奇怪的术语咧? 那么我们在什么都没有学之前,从名字上看,它似乎是将一段数组分为几个线段然后将其和在一起,那么不就行了吗? 假设现在有一道题,首先告诉你一段数组,有两个操作,1:把其中某一区间给求和 2:把一段数字进行修改(洛谷链接) 那么当你什么都没学之前,首先你肯定会脑海中的 阅读全文
posted @ 2021-05-13 18:46 Dydong 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 2021/5/1 最近看了十种排序方法,每种排序都有其各自的优点并且他们的思路非常独特,因此想通过这篇文章来记录一下各个排序的优缺点。 十种排序:冒泡,插入,希尔,选择,堆排,归并,快排,表排,桶排,基数排序(难度不一定按照顺序)。 一:冒泡排序 (对相邻数据进行比较,暴力简单。但是上界达o(n^2 阅读全文
posted @ 2021-05-01 20:31 Dydong 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 2021/4/28 今天来记录一点关于对拍的技巧,可能在有些比赛中不常用,但是用于比较程序之间的差异,鲁棒性等等还是meaningful的。因此写下这篇文章来简单介绍一下对拍的方法。 首先什么是对拍呢?简单介绍假设你有一个标程然后还有一个自己写的暴力程序,你想比较一下这两个程序的差异,那么首先我们需 阅读全文
posted @ 2021-04-28 17:07 Dydong 阅读(153) 评论(0) 推荐(0) 编辑