摘要: RMQ #include <bits/stdc++.h> using namespace std; #define int long long char* p1, * p2, buf[100000]; #define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1, 阅读全文
posted @ 2024-02-05 11:18 BreadCheese 阅读(23) 评论(0) 推荐(0)
摘要: O(logan)的时间复杂度 代码示例 #include <bits/stdc++.h> using namespace std; #define int long long #define mod 998244353 int a, b; int ksm(int a, int b) { int re 阅读全文
posted @ 2024-02-04 11:25 BreadCheese 阅读(8) 评论(0) 推荐(0)
摘要: 二分法简介 为一高效查找方法,将搜索范围一分为二。 适用于有序数据集合,利用单调性减少不必要的枚举。 解题步骤 研究数据结构的单调性。 确定最大区间[L,R],确保分界点一定在里头,若以R为答案,区间为[L+1,R](若为0到n,则L=-1,R=n),若以L为答案,答案区间为[L,R-1](同理)。 阅读全文
posted @ 2024-02-03 17:07 BreadCheese 阅读(64) 评论(0) 推荐(0)
摘要: 快慢指针 指两个指针从同一侧开始遍历序列,且移动步长一个快一个慢,快的为快指针,慢的为慢指针。称快指针为r,慢指针为l,构成区间[l,r]。直到满足某些条件时为止。 求解步骤 l一般为1,r一般为0,即初始区间为[1,0],表示空区间。 满足一定条件时慢指针右移,满足另一条件时快指针右移,保证区间合 阅读全文
posted @ 2024-02-01 19:40 BreadCheese 阅读(37) 评论(0) 推荐(0)
摘要: list list的定义与结构 极少遇到用list的情况 list为双向链表容器,它用节点形式存储元素,并使用指针将节点链接在一起,我们使用时不会用指针,只是list的底层用了指针。 它有双向性(可以在常数时间内进行插入,删除与访问操作),动态大小,不连续存储(同链表)。 可以用迭代器遍历链表中的元 阅读全文
posted @ 2024-02-01 17:01 BreadCheese 阅读(54) 评论(0) 推荐(0)