
STL
Dave_L
这个作者很懒,什么都没留下…
展开
-
STL源码剖析 - sort() , __final_insertion_sort 解析
只接受RandomAccess Iterator , list 和 slist使用自己提供的member functions sort()STL - Sort():数据量大时采用Quick Sort 分段递归排序;分段后的数据量小于某个门槛,为避免递归调用的额外负荷,改用Insertion Sort;若递归层次过深,改用Heap Sort实现如下:template <class RandomAccessIterator>inline void sort(RandomAcce.原创 2020-11-28 17:14:19 · 356 阅读 · 0 评论 -
STL源码剖析 - 关联式容器自用笔记
一般,关联式容器的内部结构是一个平衡二叉树,有良好的搜寻效率。AVL-tree、RB-tree、AA-tree等特殊结构都可实现出平衡二叉搜索树。它们比一般的平衡二叉树复杂,故插入节点和删除节点的平均时间比较长,但可以避免极难应付的最坏(高度不平衡)情况。其元素访问时间较少(一般节省25%左右)。...原创 2020-11-14 11:31:59 · 167 阅读 · 0 评论 -
STL源码剖析疑难记录
4.3 listlist不能使用STL算法sort() , 必须使用自己的sort()成员函数。因为STL算法sort()只接受random access iterator.(list是双向链表,不能随机访问list<T,Alloc>::sort()实现采用非递归的归并排序#include <iostream>#include <list>#include <algorithm>using namespace std ;void print(原创 2020-10-20 10:07:10 · 209 阅读 · 0 评论 -
剑指Offer
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。每行二分class Solution {public: bool Find(int target, vector<vector<int> > array) ...原创 2019-12-28 14:07:27 · 284 阅读 · 0 评论 -
练习赛11 A-01背包 C暴力 D并查集+优先队列 F大数 G期望 (随机游走)H最短路变形
A 思路:01背包,尽可能装满背包,并且价值最大。只需要加上一个判断条件,保证每次都能够将 j 值装满。 Code:#include &amp;lt;bits/stdc++.h&amp;gt;#define LL long long#define INF 0x3f3f3f3fusing namespace std;const int AX = 1e6+66;int v[AX];LL w[AX]...原创 2018-07-29 17:42:19 · 342 阅读 · 0 评论 -
练习赛4
A 题意:每个学校只有最强的队伍才能获得名次,输出12个获得名次的学校和队伍 思路:map一下。 Code:#include &amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;gt;#define LL long longusing namespace std;const int AX = 1e4+666;map&amp;amp;amp;amp;amp;amp;原创 2018-07-19 18:07:22 · 283 阅读 · 0 评论 -
练习赛8
A 签到,模拟Code:#include <bits/stdc++.h>using namespace std;int main(){ int T; scanf("%d",&T); int n ; while( T-- ){ scanf("%d",&n); int x ; i...原创 2018-07-24 19:01:51 · 182 阅读 · 0 评论 -
STL的使用 Codeforces Beta Round #12 (Div 2 Only) D. Ball STL_map
题意:N 位女士参加了在国王宫殿举行的舞会。每位女士可描述为三个衡量值:美貌、智慧、富有。国王的典礼主持人知道女士们是非常特殊的生物。如果某位女士知道了舞会上存在另一位更美貌、更智慧、且更富有的女士,那这位女士就会从窗户跳出。主持人知道所有女士的三个衡量值,想要找出舞会上将会出现多少个可能的自杀者。让我们用 Bi 表示第 i 位女士的美貌值,用 Ii 表示她的智慧值,用 Ri 表示她的富有...原创 2018-07-11 16:33:54 · 456 阅读 · 1 评论 -
UESTC 数据结构专题 帆宝RMQ 分块+vector+结构体排序二分
思路:这题可以说是写的吐血了,只因为没有考虑到没有1操作,直接2操作询问的情况,分块之后就要rubuild ,不然直接二分查找vector内数据不是有序的就会混乱!! Code:#include <bits/stdc++.h>#define LL long long#define INF 0x3f3f3f3fusing namespace std;const int ...原创 2018-05-23 20:27:19 · 342 阅读 · 0 评论 -
练习赛10
A 题意:给你一个字符串s,随机选取一段区间[0,k],将这一段区间移动到剩下的字符串的左边,不知道t是什么,但是知道t的第一个字母,还能随便看t中的任意一个字母,问最优策略下获胜的概率是多少。 思路:枚举第一个字母,以及第二个字母在的位置,出现一次的话就加上。 Code:#include &lt;bits/stdc++.h&gt;using namespace std;const ...原创 2018-07-26 19:49:44 · 243 阅读 · 0 评论 -
滑动窗口思想 && 滑动窗口求最大最小值 洛谷1886
题目链接 思路:双端队列实现。#include &lt;bits/stdc++.h&gt;#define INF 0x3f3f3f3f#define LL long longusing namespace std;const int AX = 2e6+66;LL a[AX];LL deq_MAX[AX];LL deq_MIN[AX];//deque&lt;int&gt;de...原创 2018-07-31 22:50:48 · 1297 阅读 · 0 评论 -
练习赛13 A滑动窗口 B dp+树状数组维护前缀和 C博弈 G dfs序+线段树 H思维 Ifloyd J模拟
B题意:给一个数组,求有多少个严格上升的子序列 思路: dp[i]表示以i结尾的上升子序列个数,dp[i] = Σdp[j] + 1 a[i] &amp;amp;amp;amp;gt; a[j] . 先离散化下,然后用树状数组维护前面比他小的 结果的和 , 每次加1然后更新dp[i],最后询问最大的数(离散化后最大为n)的结果。 Code:#include &amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;原创 2018-07-31 17:53:02 · 343 阅读 · 0 评论 -
练习赛3 B组合 C multiset D set G 计算几何矩形面积交/并 H模拟 I 组合数公式+逆元 J搜索 K添加限制条件的最短路
B. 题目链接:https://hihocoder.com/problemset/problem/1509 题意:给定一个长度为 n 的非负整数序列 a[1..n] 你需要求有多少个非负整数 S 满足以下两个条件: (1).0 ≤ S &amp;amp;amp;lt; 260 (2).对于所有 1 ≤ i &amp;amp;amp;lt; n ,有 (a[i] xor S) ≤ (a[i+1] xor S)思路:遍历每一对,找每一...原创 2018-07-18 17:41:48 · 374 阅读 · 0 评论 -
Codeforces Round #484 (Div. 2) A 思维 B优先队列 C dfs
A#include <bits/stdc++.h>#define LL long longusing namespace std;int main(){ int n; string s; cin >> n ; cin >> s ; if( n == 1 ){ if( s[0] == '1' ) cout << "Yes" &...原创 2018-10-18 18:05:06 · 274 阅读 · 0 评论 -
Educational Codeforces Round 46 (Rated for Div. 2) A 模拟 B思维,前缀和 C思维,贪心排序
A题意:a列表,b列表,只能修改字母,问最少修改几次字母让a,b相同。思路:mp搞一下,没读题看样例错了半天,Code:#include <bits/stdc++.h>#define LL long long using namespace std;string s[15] = { "M", "L" ,"S" ,"XL" , "XS" ,"XXL"原创 2018-10-10 22:59:20 · 194 阅读 · 0 评论 -
K Smallest Sums UVA11997(多路归并问题) 优先队列
UVA11997题意:k 个数组 每个数组 k 个数,每个数组取一个数有k^k种取法构成不同的和,问和的前k小的值。思路:要求k组,先考虑2组,a 数组, b数组。取数方式有k^2 种,要从其中找到最小的k个,对b数组排序,可以先求出 a[0] + b[0] , a[1] + b[1] , … , a[k-1] + b[0] 存入优先队列,之后 依次弹出前k小,同时判断如果b右边还...原创 2018-11-20 16:29:32 · 218 阅读 · 0 评论 -
2018 UESTC Training for Data Structures--L - 爱吃瓜的伊卡洛斯(2) 启发式合并+并查集+set
L - 爱吃瓜的伊卡洛斯(2)Time Limit: 1000 MS Memory Limit: 64 MB Submit Status 伊卡洛斯很爱吃西瓜。一次,他来到一个西瓜摊旁,发现水果摊有 N N 个西瓜,西瓜有红色、黄色、绿色、蓝色……等等数不清的颜色。 伊卡洛斯很想知道知道一些信息,便于老板交谈了起来。 当老板的话的第一个字符为”A”时,老板会告诉伊卡洛斯一些...原创 2018-05-13 10:02:03 · 620 阅读 · 0 评论 -
HDU1237 栈
简单计算器Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24714 Accepted Submission(s): 8936Problem Description读入一个只包含 +, -, *, / 的非原创 2018-03-26 18:37:09 · 246 阅读 · 0 评论 -
51NOD1459 迷宫游戏
1459迷宫游戏基准时间限制:1 秒 空间限制:131072 KB 分值:0难度:基础题你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的原创 2017-08-01 15:32:13 · 330 阅读 · 0 评论 -
priority_queue
出处:http://www.cnblogs.com/flyoung2008/articles/2136485.htmlpriority_queue 模板声明带有三个参数:priority_queue其中Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。Container 必须是用数组实现的容器,比如 vector原创 2017-08-01 20:42:22 · 320 阅读 · 0 评论 -
HDU4544
湫湫系列故事——消灭兔子Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 2975 Accepted Submission(s): 980Problem Description 湫湫减肥 越减越肥!原创 2017-07-26 16:00:02 · 311 阅读 · 0 评论 -
multiset 多重集合容器
头文件#include和set不同的一点:允许有重复元素出现遍历multiset 需要用到迭代器:multiset::iterator it;反向遍历需要反向迭代器:multiset:: reverse_iterator it;find()查找 multiset::iterator t = s.find(29); cout原创 2017-07-26 16:23:31 · 361 阅读 · 0 评论 -
51nod 1289大鱼吃小鱼 模拟 单调栈
1289 大鱼吃小鱼题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右。游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼。从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右)。问足够长的时间之后,能剩下多原创 2017-08-13 10:49:42 · 696 阅读 · 0 评论 -
UVA10954
题目传送: https://vjudge.net/problem/UVA-10954#include #include #include #include #include #define LL long longusing namespace std;const int AX = 5000+55;int a[AX];int main(){ int n;原创 2017-07-28 19:21:14 · 299 阅读 · 0 评论 -
51NOD 1095 Anigram单词
1095Anigram单词基准时间限制:1 秒 空间限制:131072 KB 分值:10难度:2级算法题 收藏 关注 取消关注一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。现在给定一个字典,输入Q个单词,从给出的字典中找出这些单词的Anigram。原创 2017-08-25 15:05:35 · 361 阅读 · 0 评论 -
51Nod 1428 活动安排问题 贪心+优先队列
1428活动安排问题基准时间限制:1 秒 空间限制:131072 KB 分值:10难度:2级算法题 收藏 关注 取消关注有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? Input第一行一个正整数n (n <= 10000)代表活动的个数。原创 2017-08-28 09:41:22 · 358 阅读 · 0 评论 -
例题6-3 矩阵链乘 UVA442
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=383Suppose you have to evaluate an expression like A*B*C*D*E where A,B,C,D and E are matrices. Sincema原创 2017-10-07 07:55:39 · 427 阅读 · 0 评论 -
例题6-1 双端队列 uva210
Concurrency Simulator Programs executed concurrently on a uniprocessor system appear to be executed at the same time, but in reality the single CPU alternates between the programs, execu原创 2017-10-06 11:45:37 · 762 阅读 · 0 评论 -
例题 6-2 Rails Uva514(此处是poj1363的代码)
#include #include #include #include using namespace std;const int AX = 1e3+66;int a[AX];int main(){ int n; while( scanf("%d",&n) && n ){ while( scanf("%d",&a[1]) ){ if( a[1] == 0 ) { cou原创 2017-10-06 11:47:36 · 408 阅读 · 0 评论 -
习题6 -1 Parentheses Balance uva673 简单栈的应用
题目链接:https://vjudge.net/problem/UVA-673#author=0Code:#include using namespace std;int main(){ int T; cin >> T; getchar(); while( T-- ){ stacks; string line; getline(cin,line); char c原创 2017-11-09 13:00:36 · 305 阅读 · 0 评论 -
51nod1272 最大距离 栈+贪心
1272 最大距离题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注给出一个长度为N的整数数组A,对于每一个数组元素,如果他后面存在大于等于该元素的数,则这两个数可以组成一对。每个元素和自己也可以组成一对。例如:{5, 3, 6, 3, 4, 2},原创 2018-01-31 10:12:57 · 309 阅读 · 0 评论 -
stringstream的基本用法
出处:http://www.cnblogs.com/propheteia/archive/2012/07/12/2588225.htmlstringstream是字符串流。它将流与存储在内存中的string对象绑定起来。在多种数据类型之间实现自动格式化。1 stringstream对象的使用#include#includeusing namespace std;原创 2017-10-08 16:28:10 · 298 阅读 · 0 评论 -
51nod1191 消灭兔子 优先队列
1191 消灭兔子题目来源: 2013腾讯马拉松赛第三场 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注有N只兔子,每只有一个血量B[i],需要用箭杀死免子。有M种不同类型的箭可以选择,每种箭对兔子的伤害值分别为D[i],价格为P[i](1 特别说明:1、当箭的伤害值原创 2018-04-08 16:16:27 · 340 阅读 · 0 评论 -
全排列问题 以51nod1384为例(字典序且重复)
参考:http://blog.youkuaiyun.com/laojiu_/article/details/511153521.非字典序:首先是非字典序不能重复的递归实现:以 1 , 2 , 3 , 4 为例 , 想要得到全排列,必定是 先以 一个数字开头,然后求剩下数字的全排列:以 1 开头,下面跟着 {2, 3, 4} 的全排列;以 2 开头,下面跟着 {1, 3, 4}原创 2017-08-01 10:21:22 · 705 阅读 · 0 评论