STL标准库
文章平均质量分 60
STL标准库
hnjzsyjyj
这个作者很懒,什么都没留下…
展开
-
PTA:L1-006 连续因子
○ 若 n 是素数,输出 1 之后,换行输出它本身;○ 若 n 是合数,则在1~sqrt(n) 范围内进行因子判别。简证如下:给定一个数字 n,朴素的求其因子的方法为枚举 [1,n] 的所有数进行余数为 0 判定,算法时间复杂度为 O(n)。此处加入一个小优化,即若 m 为 n 的因子,那么 n/m 必然也为 n 的因子,不妨设 m≤n/m,则有 m≤sqrt(n),所以只需在[1,sqrt(n)] 内枚举所有数进行余数为 0 判定即可,算法时间复杂度优化为 O(sqrt(n))。原创 2024-04-22 13:32:24 · 361 阅读 · 0 评论 -
AcWing 3425:小白鼠排队 ← 北京大学考研机试题
本题的一种实现方法需要按结构体某一字段对结构体数组进行排序,详见:https://blog.csdn.net/hnjzsyjyj/article/details/120184972本题的另一种实现方法是利用STL pair,然后调用 sort() 函数对 STL pair 进行排序。需要注意的是,sort() 函数默认是按照 pair 的 first 域进行升序排序。如果 first 域相同,则按照 second 域进行升序排序。原创 2023-12-11 11:27:45 · 246 阅读 · 2 评论 -
洛谷 P1379:八数码难题 ← BFS+unordered_map(哈希表)
unordered_map(哈希表):https://cplusplus.com/reference/unordered_map/unordered_map/count/原创 2023-12-03 08:11:14 · 159 阅读 · 0 评论 -
AcWing 188:武士风度的牛 ← BFS
农民 John 有很多牛,他想交易其中一头被 Don 称为 The Knight 的牛。这头牛有一个独一无二的超能力,在农场里像 Knight 一样地跳(就是我们熟悉的象棋中马的走法)。虽然这头神奇的牛不能跳到树上和石头上,但是它可以在牧场上随意跳,我们把牧场用一个 x,y 的坐标图来表示。......原创 2023-11-26 10:04:59 · 164 阅读 · 0 评论 -
HDU1276:士兵队列训练问题 ← STL queue
注意理解题意中的“从头开始一至二报数,凡报到二的出列”及”再从头开始进行一至三报数,凡报到三的出列“。它的意思是首先按照”1212121212 ······“报数,报到2的出列。然后在重构后,其余的按照”123123123123123 ······“报数,报到3的出列。原创 2023-11-15 11:16:09 · 406 阅读 · 0 评论 -
HDU 1716:排列2 ← next_permutation()
在使用 next_permutation() 的时候,初始序列一般是一个字典序最小的序列。如果不是,可以用 sort() 排序,得到最小序列,然后再使用 next_permutation()。原创 2023-11-11 21:32:55 · 411 阅读 · 0 评论 -
HDU 1027:Ignatius and the Princess II ← next_permutation()
在使用 next_permutation() 的时候,初始序列一般是一个字典序最小的序列。如果不是,可以用 sort() 排序,得到最小序列,然后再使用 next_permutation()。原创 2023-11-11 13:35:29 · 274 阅读 · 0 评论 -
HDU 2648:Shopping ← STL map
Maps are associative containers that store elements formed by a combination of a key value and a mapped value, following a specific order.https://cplusplus.com/reference/map/map/原创 2023-11-05 08:51:13 · 295 阅读 · 0 评论 -
AcWing 785:快速排序 ← vector
//交换时i的初始值为le-1,以保证选择到第一个大于mid的数v[i]//交换时j的初始值为ri+1,以保证选择到第一个小于mid的数v[j]原创 2023-09-02 22:12:29 · 355 阅读 · 1 评论 -
AcWing 129:火车进栈 ← DFS
注意:某些出栈序列不能实现。例如,当n=3时,没有312这个出栈序列。原创 2023-08-08 16:19:19 · 106 阅读 · 0 评论 -
AcWing 93:递归实现组合型枚举 ← DFS
从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。原创 2023-08-08 00:06:50 · 120 阅读 · 0 评论 -
九度OJ → 题目1368:二叉树中和为某一值的路径 ← DFS
输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。且保证树中各结点的值均不小于 0。注意:从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。原创 2023-08-07 13:56:49 · 97 阅读 · 0 评论 -
二维vector,形如 vector<vector<int>>,类似于二维数组
二维vector,形如vector,类似于二维数组。原创 2023-08-06 21:23:40 · 163 阅读 · 0 评论 -
树的重心 ← STL及链式前向星两种实现
h[a]:存储单链表表头结点 a 的编号e[idx]:存储结点 idx 的值ne[idx]:存储结点 idx 的下一个结点的编号原创 2021-08-25 15:20:29 · 268 阅读 · 1 评论 -
unordered_map 浅析
若要使用unordered_map,必须使用支持C++ 11标准的编译器。原创 2023-07-09 22:45:28 · 186 阅读 · 0 评论 -
topK 问题 ← 优先队列
给定一个序列,找出序列中最大的K个数或者最小的K个数,称为topK问题。原创 2023-03-03 22:52:43 · 312 阅读 · 0 评论 -
利用STL unique将数组元素去重后升序输出
若要利用 STL unique 将数组 a 中的 n 个元素去重后升序输出,需要经过以下三步:1. 利用 sort(a,a+n); 函数对数组 a 中的 n 个元素进行排序。2. 利用 unique(a,a+n)-a; 计算数组 a 中不重复元素的个数。3.输出a[i],i=1 ~ unique(a,a+n)-a。原创 2022-10-07 20:57:36 · 351 阅读 · 0 评论 -
PTA 天梯赛 L2-014:列车调度 ← STL set
STL set 是一种关联式容器。其内的元素,默认自动去重后按增序重排。STL set几个常用函数的返回值:end():返回集合最后一个元素的下一个位置lower_bound():返回从左到右遍历集合时满足条件的第一个元素的位置原创 2022-09-24 12:03:20 · 354 阅读 · 0 评论 -
STL set 常用函数解析
Sets are containers that store unique elements following a specific ascendingorder.Sets are typically implemented asbinary search trees.原创 2022-09-23 23:27:19 · 421 阅读 · 0 评论 -
滑动窗口(基于单调队列优化)→多重背包问题的队列优化
单调队列是指在队尾入队,在队尾及队首出队,且其元素具有单调性的特殊队列。因此,单调队列或者用数组模拟实现,或者用STL中的deque实现,不能用STL中的queue实现。滑动窗口在基于队列优化的多重背包问题中有应用。...............原创 2020-11-13 19:04:54 · 358 阅读 · 1 评论 -
STL pair 常见构造方法及实例赏析
在一个平面内给定n个点,任意三个点不在同一条直线上,用这些点可以构成多少个平行四边形?一个点可以同时属于多个平行四边形。原创 2022-07-18 17:43:43 · 123 阅读 · 0 评论 -
STL next_permutation() 函数的返回值探析
准确地讲,若以某个序列作为STL next_permutation() 函数的参数时(如代码一中的next_permutation(a,a+n)),则每调用一次STL next_permutation() 函数,将得到当前序列按字典序的下一个序列。但是,STL next_permutation() 函数的返回值为true或false。因此,常将STL next_permutation() 函数作为while循环的判断条件。...原创 2022-07-15 20:07:14 · 483 阅读 · 0 评论 -
P1088 [NOIP2004 普及组第四题] 火星人 ← next_permutation
P1088 [NOIP2004 普及组第四题] 火星人 ← next_permutation原创 2022-07-14 22:44:35 · 187 阅读 · 2 评论 -
洛谷P2141:珠心算测验 ← STL set
洛谷P2141:珠心算测验 ← STL set原创 2022-06-04 10:54:42 · 185 阅读 · 0 评论 -
HDU2094:产生冠军 ← STL set
HDU2094:产生冠军 ← STL set原创 2022-06-04 08:27:02 · 166 阅读 · 0 评论 -
用STL队列求解约瑟夫环问题
【问题描述】约瑟夫问题:n个人围成一圈,从第一个人开始报数,数到m的人出圈;再由下一个人开始报数,数到m的人出圈;…输出依次出圈的人的编号。n,m由键盘输入。【程序代码】#include <bits/stdc++.h>using namespace std;queue<int> Q;int cur=1;int main() { int n,...原创 2019-09-28 09:50:24 · 323 阅读 · 0 评论 -
利用STL中的vector实现“树”
【算法分析】树和图有什么联系?在示意图层面,树其实就是不包含回路的无向连通图。在代码层面,树就是利用STL中的vector实现的“有向无权图”。(注意:“树”的“有向性”,体现在结点间明显的父子关系)【程序代码】#include <bits/stdc++.h>using namespace std;const int N = 1e5;vector<int> v[N];int main() { int n,m; //n点数,m边数 cin>&g原创 2020-09-17 23:28:29 · 1841 阅读 · 1 评论 -
动态数组 ← STL vector
为了克服静态数组的不足,在算法竞赛中通常会利用 STL vector 实现动态数组。STL vector 的用法详见:http://www.cplusplus.com/reference/vector/vector/原创 2021-04-10 09:59:23 · 105 阅读 · 0 评论 -
利用动态数组vector排序输出动态数组的内容
【算法代码】#include <bits/stdc++.h>using namespace std;vector<int> v;int main() { int x; while(cin>>x) { v.push_back(x); } sort(v.begin(),v.end()); for(vector<int>::iterator it=v.begin(); it!=v.end(); it++) { cout<&l原创 2021-04-10 11:23:54 · 176 阅读 · 0 评论 -
hdu4841 圆桌问题(vector模拟)
【问题描述】圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即赶走该人;然后从被赶走的人之后开始数数,再将数到的第m个人赶走……依此方法不断赶走围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在赶走n个人之后,圆桌上围坐的剩余的n个人全是好人。【输入】多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767);【输出】对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B’表示坏人,50个字母原创 2021-04-16 19:08:00 · 171 阅读 · 0 评论 -
AcWing 830:单调栈(STL stack)
● 单调栈是一种非常适合处理“下一个更大元素(Next Greater Number)”问题的数据结构。原创 2021-05-28 18:04:27 · 599 阅读 · 1 评论 -
接雨水(单调栈 STL)
【问题描述】给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。例如,当给定数字序列为 0,1,0,2,1,0,1,3,2,1,2,1 时,柱子高度图如下所示,最多可以接 6 个单位的雨水。【输入格式】第一行包含整数 n。第二行包含 n 个非负整数。【输出格式】输出一个整数,表示最大接水量。【数据范围】1≤n≤100000,序列中元素均不大于 1000。【输入样例】120 1 0 2 1 0 1 3 2 1 2 1【输出样例】原创 2021-06-04 15:09:05 · 149 阅读 · 0 评论 -
next_permutation输出任意序列的全排列
【算法代码】#include <bits/stdc++.h>using namespace std;int main(){ string s; getline(cin,s); sort(s.begin(),s.end()); //very important int cnt=0; do{ cout<<s<<endl; cnt++; } while(next_permutation(s.begin(),s.end())); c原创 2021-07-09 23:54:45 · 145 阅读 · 0 评论 -
HDU 1412: {A} + {B} ← STL set
【问题来源】Problem - HDU 1412【问题描述】给你两个集合,要求{A} + {B}。注:同一个集合中不会有两个相同的元素。【输入格式】每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数。后两行分别表示集合A和集合B。每个元素为不超出int范围的整数,每个元素之间有一个空格隔开。【输出格式】针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开。【输入输出样例】输入:2 53原创 2021-11-17 16:17:41 · 424 阅读 · 2 评论 -
小米2017秋招真题:二叉树的高度
【题目描述】现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵二叉树的高度。【输入描述】输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组成,下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号。【输出描述】输出树的高度,为一个整数。【输入样例】50 10 21 31 4【输出样例】3【算法代码】#include <bits/stdc++.h>using namespace原创 2021-08-01 16:02:22 · 129 阅读 · 1 评论 -
层序构建二叉树后求其深度
【问题描述】输入二叉树的层序遍历序列(空子树用#补全),求二叉树的深度。【测试样例】层序构建二叉树的测试样例序列分别为【8 3 2 # # 6 4 # # # #】,【D A # R # E # # N # #】,对应的图分别如下所示:【算法分析】二叉树的问题一般会用递归的思想去考虑,因为二叉树是递归的结构。此题的关键是层序构建二叉树的代码。输入样例后,回车。按Ctrl+Z输出结果。【算法代码】#include <bits/stdc++.h>using nam...原创 2021-08-01 21:12:28 · 146 阅读 · 0 评论 -
使用STL vector实现的二分查找算法
【算法代码】#include <bits/stdc++.h>using namespace std;void biSearch(int x,vector<int> v) { sort(v.begin(),v.end()); //Because the elements have to be ordered int flag=0; int low=0; int high=v.size()-1; int mid; while(low<=high) {原创 2021-08-13 15:18:47 · 677 阅读 · 0 评论 -
STL中的lower_bound()、upper_bound()函数用法
【算法分析】lower_bound()返回有序序列中大于等于key的第一个值的位置upper_bound()返回有序序列中大于key的第一个值的位置【算法代码】#include <bits/stdc++.h>using namespace std;int main() { int key; cin>>key; vector<int> v; int x; while(cin>>x) { v.push_back(x); }原创 2021-08-13 17:12:03 · 3513 阅读 · 1 评论