2021年5月5日

C++之STL(1):vector

摘要: vector vector简介 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预。 vector创建 //1. 最简单创建一个vector vector<int> ve; //2. 含有5个数的vector v 阅读全文

posted @ 2021-05-05 18:59 小星◎ 阅读(71) 评论(0) 推荐(0)

算法学习(10):乘法逆元

摘要: 逆元 扩展欧几里得 void exgcd(int a, int b, int &x, int &y) { if (b == 0) { x = 1, y = 0; return; } exgcd(b, a % b, y, x); y -= a / b * x; } 快速幂 inline int qpo 阅读全文

posted @ 2021-05-05 18:45 小星◎ 阅读(70) 评论(0) 推荐(0)

算法学习(9):筛法

摘要: 线性筛(欧拉筛) void init() { phi[1] = 1; for (int i = 2; i < MAXN; ++i) { if (!vis[i]) { phi[i] = i - 1; pri[cnt++] = i; } for (int j = 0; j < cnt; ++j) { i 阅读全文

posted @ 2021-05-05 18:30 小星◎ 阅读(79) 评论(0) 推荐(0)

算法学习(8):单调队列

摘要: 单调队列 单调队列是一种主要用于解决滑动窗口类问题的数据结构,即,在长度为n的序列中,求每个长度为m的区间的区间最值。 //得到的是一个单调递减的队列 deque<int> Q; // 存储的是编号 for (int i = 0; i < n; ++i) { if (!Q.empty() && i 阅读全文

posted @ 2021-05-05 18:23 小星◎ 阅读(55) 评论(0) 推荐(0)

算法学习(7):单调栈

摘要: 单调栈 单调栈是一种和单调队列类似的数据结构。单调队列主要用于 解决滑动窗口问题,单调栈则主要用于 解决NGE问题(Next Greater Element),也就是,对序列中每个元素,找到下一个比它大的元素。(当然,“下一个”可以换成“上一个”,“比它大”也可以换成“比他小”,原理不变。) 我们维 阅读全文

posted @ 2021-05-05 17:44 小星◎ 阅读(85) 评论(0) 推荐(0)

算法学习(6):线段树

摘要: 线段树 介绍 线段树(Segment Tree)几乎是算法竞赛最常用的数据结构了,它主要用于维护区间信息(要求满足结合律)。 建立 void build(ll l = 1, ll r = n, ll p = 1) { if (l == r) // 到达叶子节点 tree[p] = A[l]; // 阅读全文

posted @ 2021-05-05 17:37 小星◎ 阅读(110) 评论(0) 推荐(0)

导航