11 2024 档案
摘要:普及-每日一题洛谷P1036 题目描述 已知 \(n\) 个整数 \(x_1,x_2,\cdots,x_n\),以及 \(1\) 个整数 \(k\)(\(k<n\))。从 \(n\) 个整数中任选 \(k\) 个整数相加,可分别得到一系列的和。例如当 \(n=4\),\(k=3\),\(4\) 个整
阅读全文
摘要:DFS深度优先搜索-入门 笔记 DFS 依靠递归的思想,总是往更远的方向行进,直到达到边界,再返回到上一步考虑另外的方向 (递归-回溯) 递归实现指数型枚举 从 \(1\)~\(n\) 这 \(n\) 个整数中随机选取任意多个,输出所有可能的选择方案,即计算\(2^n\) 我们考虑有 \(n\) 个
阅读全文
摘要:双指针扩展-三指针笔记 在使用双指针维护一段序列时,可能会出现多个区间的情况,这时若是仅采用双指针移动,则会漏掉部分情况 可以再加入一个指针来,使两个指针维护一个子序列,使子序列和另外一个指针共同维护 这里以洛谷P1102为例: 我们需要对一段序列求满足条件的数对的数量,但由于序列中元素可以重复,所
阅读全文
摘要:最大子段和问题 ——————以洛谷P1115为例 最大子段和,顾名思义就是在一段数组中选取元素和最大的子段(或最小) 这里总结了动态更新的写法: int main() { int n, a, maxm, temp; scanf("%d", &n); for (int i = 0; i < n; i+
阅读全文
摘要:单调队列笔记 双端队列deque维护一个严格单调变化的组,可以称为一个单调队列 单调队列因为可以直接对组的两端进行操作,所以可以有效的降低时间复杂度 用单调队列来解决问题,一般是需要得到的某个范围内的最小值或最大值 这里以一道经典的单调队列的题目为例: 题目描述 有一个长为 \(n\) 的序列 \(
阅读全文
摘要:单调栈笔记 单调栈,顾名思义,就是把元素按照严格单调的顺序存在栈中(从「栈顶」到「栈底」) 可以加速查找数组中满足特定条件的数的过程,例如: 寻找左侧第一个比当前元素大的元素 寻找左侧第一个比当前元素小的元素 寻找右侧第一个比当前元素大的元素 寻找右侧第一个比当前元素小的元素 可以有效的将嵌套搜索的
阅读全文
摘要:单双链表(数组模拟)笔记 如题,我们要使用数组来模拟链表这个数据结构 区别于传统的结构体链表(动态链表): struct node { int value; struct node* next;//指向下一个节点的指针 }user_define_name;//调用链表的别称 数组模拟链表(静态链表)
阅读全文
摘要:普及-每日一题洛谷P1147 题目描述 对一个给定的正整数 \(M\),求出所有的连续的正整数段(每一段至少有两个数),这些连续的自然数段中的全部数之和为 \(M\)。 例子:\(1998+1999+2000+2001+2002 = 10000\),所以从 \(1998\) 到 \(2002\) 的
阅读全文
摘要:普及-每日一题洛谷P1024 有形如:\(a x^3 + b x^2 + c x + d = 0\) 这样的一个一元三次方程。给出该方程中各项的系数(\(a,b,c,d\) 均为实数),并约定该方程存在三个不同实根(根的范围在 \(-100\) 至 \(100\) 之间),且根与根之差的绝对值 \(
阅读全文