摘要:
对于单点修改的主席树,我们可以采用树套树来写,原因 不会整体二分求带修改的区间第k小。 所以学习了一波 待修改的主席树。真的是难写,或者说码量有点大。 不过和三维偏序CDQ分治相比其实差不了多少,但是CDQ终究比树套树快而且空间消耗小。 两者都很不错! 经典题,但是对于我这个根本不懂树套树的人来说是 阅读全文
摘要:
关于CDQ分治我想我自己做过前面的题应该会了这种思想了吧,然后我是真的“会了”。 我想针对于偏序问题我是会了,我现在只会三维偏序了,脑子都是疼的。 但是 CDQ分治最主要的还是基于时间方面的分治思想,所以呢,偏序问题没那么重要了。 关键是分治!分治(敲黑板)不是偏序! 下面我们再来几道偏序。。。 这 阅读全文
摘要:
CDQ分治呢 是一种离线的分治算法 当然是基于“时间"的顺序对操作序列进行分治的。 所以它也叫基于时间的分治算法。 这个算法就只有三步: 1 对于l r 先分而治之 mid solve(l,mid) 2 再算 (mid+1,r) 3 最后就是 (l,mid) 对 (mid+1,r)的贡献了。 当然看 阅读全文
摘要:
刷了那么多线段树的题终于可以搞一下可持久化线段树了。 首先是 放一道最最最简单的例题: 对于这个需要访问历史的线段树来说 我想应该是一棵可持久化线段树的东西。 对于一棵 线段树我们想让其可持久化 那么应该是 让其点接着以前的点接(如果没有修改的话) 我想修改的话就必须搞一波树套树了(尽管我不会但是 阅读全文
摘要:
这个扫描线气死我了,我理解其中思想 却不知道怎么写 彻底被结构体优先队列搞疯,以前以为在结构体里面重载运算符就是优先队列结构体,发现错误的照样sort。 我去,这是真的难受 无奈之下写了一个pair套pair再套pair还套pair 这可是要exs我了,想define F->first 发现不行鬼畜 阅读全文
摘要:
早就要学主席树了,可是发现自己连线段树都不会了。 然后重学线段树 搞了几波例题,感觉还不错,不管是状态(自己的)还是细节,还是思路都是有的。 这道题呢 一道算是对5个月前的我来说比较鬼畜的题了。 但是对现在的我的话却是如此简单,尽管浏览了一遍以前的代码。*(我还是会的 考虑lazy tag 先加后乘 阅读全文
摘要:
突然看见能快速求 区间最大值 神奇呢。 这道题呢 首先一看 sort +单调队列啊 一股热血涌上心头 然后写了sort 把排序结果输出后 关掉程序 这个不能写单调队列 不行 左端点右端点都不单调,尽管我保证左端点或右端点其中一个单调,但是另一个依然不单调所以用不了单调队列。 如上图所示样例的排序 单 阅读全文
摘要:
谁能想到基本算法就这么难呢?我想去冲省选,但是迟迟在这些地方 花时间 算是提升自己的思维算了。 这道题呢 答案其实很简单每个数在a的位置和在b的位置之差的累加/2即是答案为什么呢?考虑当前数字 要向后面的那个数字换如果后面那个的目标不是当前位置呢?(自己可以把所有可能的情况画一下) 那么一定有 在当 阅读全文
摘要:
排序有很多种但是 就看你会哪一种了! 选择排序 O(𝑛2) 插入排序 O(𝑛2) 冒泡排序 O(𝑛2) 计数排序 O(𝑛 + 𝑚) 基数排序 O (𝑛 log 𝑚) 桶排序 O(𝑛)~O(𝑛2) 归并排序 O(𝑛 log 𝑛)堆排序 O(𝑛 log 𝑛)快速排序 O(𝑛 阅读全文
摘要:
day1 当然还学习了双指针,当然效率很高。 这道题很有意思了 数字都是正数。 秒想到了二分 。nlogn //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<iomanip> #include<cstring 阅读全文