题目 https://www.luogu.com.cn/problem/P5250 思路 使用set在寻找合适的木头的时候使用二分,但是一个set使用好像不能同时使用lower_bound(a)与lower_bound(a,greater<int>())? 于是菜菜的使用lower_bound找到大 ...
分类:
其他好文 时间:
2020-06-28 22:11:35
阅读次数:
62
C:给两个栈,每次只能取栈顶元素,取完后自动pop 问能取到最多几个元素 栈中元素之和必须小于等于K 官方题解给出的做法是O(N+M) 受上一场CF启发,此题可以很自然联想到二分做法。 二分答案,答案显然具有单调性。check函数只需遍历一遍可能情况 复杂度O((N+M)logX) int n, m ...
分类:
其他好文 时间:
2020-06-28 15:01:37
阅读次数:
52
一、思维导图 二、重要知识点 1.线性表的查找 1.1顺序查找 设置监视哨的顺序查找算法: int Search_Seq(SSTable ST,KeyType key) { ST.R[0].key = key; for(i = ST.length;ST.R[i].key != key:--i); r ...
分类:
其他好文 时间:
2020-06-28 00:13:18
阅读次数:
76
二分的本质并不是单调性。 有单调性一定可以二分,但是可以二分的题目不一定有单调性。 我们找一个性质:使得整个区间可以被划分为两个左右区间,一边满足这个性质,一边不满足这个性质,中间没有交点。二分就可以寻找这个性质的边界。 上红下绿。 每次二分时都选择答案所在的区间进行操作,每一次都保证区间里一定有答 ...
分类:
其他好文 时间:
2020-06-27 20:18:15
阅读次数:
67
一、思维导图: 二、需要留意的点 链式结构可以进行二分查找,但是不能在对数时间内完成,因为要对数字下标进行随机访问,实际都得遍历一遍,需要O(n) 二分查找应用场景的局限性: (1)基于顺序表的存储结构; (2)针对有序数据; (3)数据量小且比较操作不耗时时 (4)数据量不能太大(需要连续的内存空 ...
分类:
其他好文 时间:
2020-06-27 20:12:59
阅读次数:
66
传送门 很棒的题。 有两个序列a和b,长度都为n,对于a序列需要知道区间的最大值,对于b序列需要知道区间的最小值 求出符合式子 \(max_{i = l}^ra_i = min_{i = l}^rb_i\) 的所有区间个数。 方法很简单,用st表分别维护a序列的最大值的b序列的最小值,明显,a序列的 ...
分类:
其他好文 时间:
2020-06-27 19:49:33
阅读次数:
59
一、第七章内容小结 1. 查找的基本概念 2. 线性表的查找 ① 顺序查找:从表的一端开始依次将记录的关键字和给定值进行比较,某记录的关键字和定值相等则查找成功;反之,扫描整个表未找到相等记录,则查找失败。顺序查找适用于线性表的顺序存储结构和链式存储结构。 2-1基于顺序表的顺序查找算法: 1 in ...
分类:
其他好文 时间:
2020-06-27 16:03:50
阅读次数:
78
顺序查找 监视哨的顺序查找 因为每次循环都需要对是否越界,即是否小于n做判断。事实上,还可以有更好一点的办法,设置一个哨兵,可以解决不需要每次让i与n作比较。 折半查找(二分查找) 二分查找(又称为折半查找)是在有序序列中查找比较多的查找算法,基本思路:设有一个从小到大的序列,取中间的元素m进行比较 ...
分类:
其他好文 时间:
2020-06-27 09:20:15
阅读次数:
58
Description 思路 如果我们知道某一个站$b_i$到对$a_i$的贡献是多少,那么就可以用贪心求解(因为这样我们就知道$b_i$对$a_{i+1}$的贡献,从而知道$b_{i+1}$对$a_{i+1}$...)。所以可以考虑二分$b_i$对$a_i$的贡献。 可以把$b_i$对$a_i$的 ...
分类:
Web程序 时间:
2020-06-27 00:33:03
阅读次数:
167
本章主要学习了查找的相关知识。关于查找,有以下几种基本概念: (1)查找表。按照数据类型可分为数组和链表;按照具体存储逻辑又可分为顺序表、哈希表等等。 (2)关键字。作为待查找的元素,在查找表中进行检索。 (3)动态查找。若表中没有所查的关键字,则将关键字按照原表的规律添加在表中,形成一个含有关键字 ...
分类:
其他好文 时间:
2020-06-27 00:32:29
阅读次数:
67