摘要: 借着题解系统得梳理一下对于线段树的理解 先建立一个结构体为下面代码实现打基础 首先,什么是线段树呢?线段树属于完全二叉树,其中每一个子节点而言,都表示整个序列中的一段子区间。由第一层结点储存单个元素,每个子节点不断向自己的父亲节点传递信息,而父节点存储的信息则是他的每一个子节点信息的整合。 用数组建 阅读全文
posted @ 2019-01-20 23:31 .Terena 阅读(176) 评论(1) 推荐(0)
摘要: 多重背包问题模版 传送门 问题介于完全背包和01背包之间,不同在于每个物品有确定的数量。 看到这道题的第一思路相比一定是把每种物体分成若干个个体然后01背包跑一遍。但如果总物体数太多的话,显然肯定会无情超时,因此我们要在分割每种物体时应用一点技巧来进行优化。 这里用到的是二进制进行分割优化。 首先要 阅读全文
posted @ 2019-01-19 15:35 .Terena 阅读(174) 评论(0) 推荐(0)
摘要: 传送门 动规基础部分,不废话了看代码肯定能懂 阅读全文
posted @ 2019-01-19 09:20 .Terena 阅读(85) 评论(0) 推荐(0)
摘要: 校内集训的第二天,讲解了bfs、dfs和dp。 今天的重点主要是01背包问题,这里就简单谈谈一种理解得比较好的做法。 传送门 读完题后可知,本题与应用于贪心算法中的背包问题有本质上的不同,那就是每件物品带有自己的权重,常规的贪心思路不可行,因此要借助动态规划来实现。 大体思路为将当前问题通过类似于递 阅读全文
posted @ 2019-01-18 22:16 .Terena 阅读(263) 评论(0) 推荐(0)
摘要: 传送门 我真爱汉诺塔 虽说是道紫题,但仔细想想仍适用于基础版本的汉诺塔的递推思路:对于每个情况中的底盘,必须将其上方所有的盘都先挪走。 转移到这道题上,即将每个底盘上的所有盘全部按当前最高优先级操作挪走。 进一步简化,把每个底盘上的所有盘当作一个盘,按照最高优先级操作移动即可。 理论有了,接下来又是 阅读全文
posted @ 2018-12-21 22:26 .Terena 阅读(251) 评论(1) 推荐(0)
摘要: 洛谷普及训练场贪心的最后一题 思想上确实是贪心但因为数据范围的问题我80%的时间都是在写高精(魔鬼) 本题的贪心策略的求解过程几乎是纯数学推导,但一旦把握了这个方向想推出来还是比较容易的,接下来只要耐心把排序和高精写好就可以了 那么来说一下推导过程: 首先是本题的无后效性:每个大臣得到的金币数并不会 阅读全文
posted @ 2018-12-19 22:15 .Terena 阅读(217) 评论(0) 推荐(0)
摘要: 如题,简单来说,最小生成树就是给出一定结点和无向边,通过选定给出的无向边把结点连接成一棵或几棵树,使它(它们)的边权最小 如图所示,该最小生成树的最小边权即为2+2+3=7 最小生成树常用的有两种方法:Prim和Kruskal 这里只说Kruskal(炒鸡感谢hyc神犇的讲解,讲的真的特别清楚) 先 阅读全文
posted @ 2018-12-17 21:25 .Terena 阅读(263) 评论(1) 推荐(0)
摘要: coding使我忘记化学 传送门 如题,实质上是在考察单调队列,最大值和最小值可分别用一个单调队列排序输出。 操作方便,定义两个数组分别储存队列和每个元素的序号 由题得队列原则:队列数组中末尾元素的序号与开头元素序号之差不能大于k,使队列的范围保持为窗口的宽度 在保证这点之后,只要同时保证队列始终是 阅读全文
posted @ 2018-12-13 21:58 .Terena 阅读(195) 评论(0) 推荐(0)
摘要: 由洛谷的模版来引出话题 传送门 跟题干的要求相同,在并查集问题中,n个不同元素被分进若干个集合中,我们要做的通常是查找一个元素所在的集合以及两个元素各自所属集合的合并。 关于该操作的实现方式,可以参考这个例子: 有a,b,c三个人,一个列表f[]表示每个人的老大是谁 假设a和b打架了,a做了b的小弟 阅读全文
posted @ 2018-12-10 22:09 .Terena 阅读(175) 评论(2) 推荐(0)
摘要: 传送门:https://www.luogu.org/problemnew/show/P1242 乍一看可能会被吓到,但仔细想想其实这题还是很水的 对比一下普通汉诺塔问题,新汉诺塔挪盘的策略不变,只是有个别地方不同: 1.各个盘并不集中在一个柱上,每个柱上都可能会有盘。 2.各个盘最终的目标不是挪到同 阅读全文
posted @ 2018-12-09 20:49 .Terena 阅读(159) 评论(0) 推荐(0)