
笔记
文章平均质量分 63
-珂朵莉-
0.0
展开
-
寒假训练 3(博弈论)
......原创 2022-01-27 13:13:36 · 2536 阅读 · 0 评论 -
寒假训练 2(树形、数位dp)
是一篇写的很烂的读书笔记原创 2022-01-21 12:33:12 · 441 阅读 · 0 评论 -
二叉树的初识
这个周做了一些题并学习了二叉树,就总结一下二叉树的知识吧。一、二叉树1.二叉树每个结点最多有两个子节点,分别是左孩子和右孩子,二叉树存在满二叉树和完全二叉树等情况。2.遍历二叉树需要用到搜索的知识,用深度优先遍历相对较为简便。3.二叉树有着先序遍历、中序遍历、后序遍历等情况。先序遍历按照父节点、左儿子、右二子的顺序进行组合。中序遍历按照左儿子、父节点、右儿子的顺序进行组合,而后续遍历的顺序则是左儿子、右儿子、父节点。一颗树当已知两种以上的排序方法则能求出整个树(先序+后序属于特殊情况,不能写出)4原创 2021-10-10 17:51:52 · 107 阅读 · 0 评论 -
算法竞赛入门到进阶 读书笔记(7)
一、快速幂计算一个常数的n次幂,如果直接暴力相乘的话有可能会超时,因此使用递归连续计算常数的平方可以减少复杂度int fastpow(int a,int n){ if(n==1) return a; int t=fastpow(a,n/2); 缩小向下递归计算 if(n%2==1) return t*t*a; 如果是奇数递归时会被多消掉一个a,要补上 else return t*t;二、最大公约数和最小公倍数后来才知道有模板,几个月前做了个综合题型,想了好几种方法都超原创 2021-08-14 20:07:52 · 107 阅读 · 0 评论 -
算法竞赛入门到进阶 读书笔记(6)
贪心法是将整个问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直到所有步骤结束的方法。但它是求得局部最优解的方法,对于某些问题不一定能得到最优解。贪心法的基本问题有区间重合,区间覆盖,性价比等问题,这就不过多叙述了,这次主要写一些贪心和其他思想结合的算法。一、Huffman编码Huffman编码是贪心和二叉树结合的算法,是"前缀"最优编码。数据在计算机中都是用二进制码来表示的,一般的编码方式是把每个字符都用相同长度的二进制数来表示,这样并不是节省空间的最优方法,通过二叉树进行编码能够实现空间原创 2021-08-06 21:27:10 · 114 阅读 · 0 评论 -
算法竞赛入门到进阶 读书笔记(5)
一、线段树1.线段树是一种用于区间处理的数据结构,用二叉树来构造。树的每个结点代表线段[L,R]。当L==R时代表这个结点只有一个点,即为叶子结点;如果L<R则代表这个结点是一个区间,还可以继续往下分为左儿子和右儿子。线段树的操作次数是(log 2 n),复杂度优于直接查找。通过树结点的延伸可知,数量n的区间树最多有4n个结点,因此要设置4n的储存空间。poj 2182: 有编号1-n的牛,对于每个位置的牛,知道前面编号比它小的有多少头,求编号的顺序。给出小的个数的数组c[n] ,通过列举可原创 2021-08-02 18:21:00 · 121 阅读 · 0 评论 -
算法竞赛入门到进阶 读书笔记(4)
"数据结构并不能直接解决问题,但是数据结构是算法不可缺少的一部分。数据结构能把杂乱无章的数据有序组织起来,易于编程处理。“一、并查集并查集是一种用于处理不相交集合合并问题的一类数据结构,主要操作包含:初始化、查找、合并、统计等步骤。典型例题就是”朋友“问题。合并:确定朋友关系后合并形成新的集查找:通过递归查找根结点以便合并根结点:根结点是一个集合的代表,将根结点并入另一个集也就代表将整个集合并入了一个新的集例:1,2属于朋友、1,3也属于朋友,那么他们都属于同一派系。处理这类问题首先要初始化:原创 2021-07-27 22:37:24 · 106 阅读 · 0 评论 -
算法竞赛入门到进阶 读书笔记(3)
四、深度优先搜索深度优先搜索会首先从一层探索到最深直到碰壁无法行走,在换另一条路搜索下去,用这个方法走遍所有的路,并且规定不会走重复的路。深度优先搜索的代码通常会比广度简便一些,但像最短距离之类的问题还是要使用广度优先搜索。1 .与递归结合深度优先搜索用递归实现是最普遍的,hdu1312的红黑砖块问题用dfs做就更为简便。void dfs(int dx,int dy){a[dx][dy]='#'; //标记已经走过num++; //走过的砖块数+1for(i=0;i<4;原创 2021-07-25 21:08:16 · 109 阅读 · 0 评论 -
算法竞赛入门到进阶 读书笔记(2)
一、递归递归是将大问题逐步缩小为最小的同类问题的过程,即n->n-1…->1,一个递归函数直接调用自己就实现了程序的复用。全排列:1.用stl输出全排列next_peimutation()可以不断生成下一个排列,通常由sort排序得到最小序列后不断用next_permutation()生成下一个字典序更大的排列sort(a,a+4);do{ for(i=0;i<4;i++){ cout<<a[i]<<" ";cout<<endl;}原创 2021-07-23 22:56:59 · 156 阅读 · 1 评论 -
算法竞赛入门到进阶 读书笔记(1)
stl容器包括顺序式容器和关联式容器顺序式容器包括vector,list,deque,queue,priority_queue,stack等关联式容器包括set,multiset,map,multimap等一、vector和list数组有静态数组和动态数组两种类型,vector是stl的动态数组,可以节约空间也不易出错,需要时能改变数组大小。删除和插入操作少,访问元素频繁。vector < int> a 定义a的初始化数组vector < int> a(100,6)原创 2021-07-21 23:33:29 · 147 阅读 · 1 评论