数据结构
文章平均质量分 54
to cling
Everything negative - pressure, challenges - is all an opportunity for me to rise.
展开
-
G. Count the Trains(思维set + 二分)
Codeforces Round #797 (Div. 3)铁轨上有 n 节车厢,每节车厢在各自的引擎驱动下可以达到一个最高速度,记录在一个序列 {ai}\{a_i\}{ai} 里. 车厢从左到右的编号依次为 1 到 n.现在让这些车厢向左尽可能快地开动,要求靠右的车厢实际速度不能超过靠左的车厢. 这样便会形成若干段速度一致的连续数节车厢,称这样的一段为一节火车. 例如序列 a=[10,13,5,2,6] 对应的车厢的实际运行速度为 [10,10,5,2,2],形成了 3 节火车.在车厢行驶时,依次收到了原创 2022-07-12 19:06:45 · 281 阅读 · 0 评论 -
E. OpenStreetMap(二维单调队列)
Codeforces Round #574 (Div. 2)给定一个大小为 n×mn \times mn×m 的矩阵h, 求出所有大小为 a×ba \times ba×b 的子矩阵中最小值的和。题解求出h中,所有行中长度为b的滑动窗口中的最小值,将其结果存入f数组求出f中, 所有列中长度为a的滑动窗口中的最小值,其结果即为所有大小为 a×ba \times ba×b 的子矩阵中的最小值时间复杂度 O(nm)O(nm)O(nm)......原创 2022-07-12 01:12:48 · 197 阅读 · 0 评论 -
Closest Equals(离线 + 线段树)
daimayuan div1 205本题的主要思想就是:原创 2022-06-16 17:59:33 · 158 阅读 · 0 评论 -
XOR Inverse(trie + 逆序对)
dp[i][j]:x二进制下的倒数第i位为j时,逆序对的数量dp[i][j]: x二进制下的倒数第i位为j时,逆序对的数量dp[i][j]:x二进制下的倒数第i位为j时,逆序对的数量对于一棵trie树,插入的字符串是一个数的二进制字符串(从高位开始插入)。其结构其实就是一棵二叉树。假如,从0到 2n - 1依次插入建立一棵trie树,最终就是一棵n + 1层的完全二叉树。对于本题中,仅仅是完全二叉树的部分节点。将每个数字从高位到低位建立一棵trie树,建树过程中,记录每个结点经过的次数cnt[p]。显然,原创 2022-06-15 16:23:00 · 247 阅读 · 0 评论 -
E - Sorting Queries(模拟)
E - Sorting Queries题意:有Q个询问Each query is of one of the three kinds below:1 x : Append x to the end of A.2 : Print the element at the beginning of A. Then, delete that element. It is guaranteed that A will not empty when this query is given.3 : Sort原创 2021-09-05 15:32:30 · 213 阅读 · 0 评论 -
子串的最大差(单调栈)(易错)
每日一题 div1Solutionans=∑(max[l,r]−min[l,r])1≤l≤r≤n,[l,r]ans = \sum (max_{[l, r]} - min_{[l, r]})\\1 \leq l \leq r \leq n , [l, r]ans=∑(max[l,r]−min[l,r])1≤l≤r≤n,[l,r]表示所有子区间去括号ans=∑max[l,r]−∑min[l,r]ans = \sum max_{[l, r]} - \sum min_{[l, r]}ans=∑max原创 2022-05-02 20:05:37 · 513 阅读 · 0 评论 -
map与set常用函数总结(个人)
map与set常用函数总结sets.insert()该函数返回一个 pair<set::iterator, bool>型的数据假设一个该类型数据为p可根据p.second的值判断是否插入成功,即要插入的元素是否已经存在s.erase()s.find()s.lower_bound(iterator a, iterator b, int x)返回一个大于等于x的元素对应的指针,查找失败则返回s.end()s.upper_bound(iterator a, iterator b,原创 2021-04-10 17:40:03 · 193 阅读 · 0 评论 -
C. Equal Sums(STL)
传送门题意:题意:给 n 个数组,找出两个数组,这两个数组各删除一个数字后,使得两个数组的和相同.题解:可以用一个map<int, pair<int, int> >的关键字存储第i个数组删除第j个值后总和,关键字对应的值为pair类型,pair分别储存对应的i,j值。收获:学到如何判断上述类型的map是否被使用过。我是又开了一个map<int,int>数组,关键字与上述map相同。mp.count(sum - a[j]) != 0my code:const原创 2021-09-01 00:03:50 · 201 阅读 · 0 评论 -
vector用法及通用函数总结
vector用法及通用函数总结#include<bits/stdc++.h>using namespace std;vector<int>v;vector<int>::iterator it1, it2, it;vector<int>::iterator a, b;1. .v.push_back()2. v.pop_back()3. v.front()4. v.back()5. v.count()6. v.count_if()bool原创 2021-04-10 15:59:12 · 273 阅读 · 0 评论 -
D - Rectangles(数据处理)
AtCoder Beginner Contest 218题意给出n点二维坐标,(在第一象限)。求可以组成多个矩形,要求矩形的四条边都平行于坐标轴。思路这题是考察数据的处理,先对x,y坐标从小到大排序。对于x相同的,把所有的y的组合用map记录,mp[make_pair(y1, y2)]++,这种记录方式第一次见,比较新颖。由于是n个不同的点,所以,当x相同时,所有的y的组合不会出现相同的情况。综上,对于任意一组相同的x组成的y的集合,其所有的y的组合在其前面所有相同的x的组成的y的集合中(y1, y原创 2021-09-12 11:29:28 · 211 阅读 · 0 评论 -
扫描线(线段树)
AcWing247. 亚特兰蒂斯Codeconst int N = 1e4 + 4, M = 1e6 + 6;int n, num;struct seg{ double x, y1, y2; int k; bool operator < (seg a)const { return x < a.x; }}s[N * 2];double yy[N * 2];int fd(double x){ return lower_bound(yy + 1, yy + nu原创 2022-05-09 18:10:40 · 257 阅读 · 0 评论 -
你能回答这些问题吗(线段树模板)
AcWing245#define ll long long int#define tp t[p]#define tl t[p << 1]#define tr t[p << 1 | 1]const int inf = 0x3f3f3f3f;const int N = 5e5 + 3, M = N * 4;int n, m;int a[N];struct node{ int l, r; int sum, lm, rm, date; node()//初始化 {原创 2022-05-07 17:24:49 · 308 阅读 · 0 评论