![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
看见我请叫我去学习
此人很懒
展开
-
01trie树模板 I - 求亦或最值
01Trie树模板 I - 亦或最值乱搞Face题意求集合中与valvalval亦或最大值数据范围: 1≤n,m≤105,a[i]≤2321\leq n ,m\leq 10^5 , a[i] \leq 2^321≤n,m≤105,a[i]≤232前置技能trie数~~(没学trie树来这儿干啥)~~Tutorial:原理插入查找复杂度:O(log(val))O(log(val))O(log(val))总空间复杂度:O(n×40)O(n\times40)O(n×40)原创 2020-07-28 01:00:39 · 117 阅读 · 0 评论 -
2020牛客小白月赛A操作序列
这题灵活运用了std::map- 给出一个长度无限的数列,初始全部为零,有三种操作:- 增加操作:给下标为 t 的数加 c 。特别注意,如果在下标 [t-30,t+30] 内有不为零的数,增加操作无效。- 削减操作:让数列中下标最小的不为零数变为零。- 查询操作:查询数列中下标为 tt 的数字是多少。Facestd::maptutorial:无脑维护#include &...原创 2020-02-23 00:18:14 · 140 阅读 · 0 评论 -
cf1209D(div1+div2)
拦住我的好题(DSU)题意:给定n种零食, 现有m头奶牛, 每个奶牛都有唯一两种喜欢吃的零食现在你使得这些奶牛按照某种序列来一个一个吃零食, 每头奶牛会在剩下的零食堆里面找自己喜欢的两种零食, 有几种就吃几种, 如果一种自己喜欢的都没有, 着头奶牛就会自杀, 现在, 求在最优排列下最少有多少头牛自杀数据范围: n≤200000n \leq 200000n≤200000>&g...原创 2019-11-27 14:47:01 · 181 阅读 · 0 评论 -
cf1208E(div1+div2)
好个差分!题意:给定一个n×wn\times wn×w矩形, 还给定n个数组, 每个数组的长度都小于等于w, 所以每个长度小于w的数组都可以在一行内左右滑动现求在保证所有数组都在矩形范围内滑动的情况下, 该矩形的每一列的最大值数据范围: n≤1000000n \leq 1000000n≤1000000>> face << 前置技能: 线段树+差分...原创 2019-11-24 12:46:13 · 154 阅读 · 0 评论 -
cf1207f(div2)
以为是一道想不出来的数据结构结果是看了题解拍手叫好的题题意:有一个500000的数组初始化全为0, 现有两种操作op1: 对第x项加y;op2: 询问所有下标满足i%x == y的项求和数据范围: q≤500000q \leq 500000q≤500000>> face << 前置技能: 无Tutorial: 这个题的暴力算法平均每个询问是O(...原创 2019-11-18 20:31:37 · 123 阅读 · 0 评论 -
计算几何专题(四)
题意:给定平面和上n个点,判断平面物理距离等=等于曼哈顿距离的点的对数>> face << Strategy:D12=(x1−x2)2+(y1−y2)2 {D_1}^2 = (x_1 - x_2)^2 + (y_1 - y_2)^2 D12=(x1−x2)2+(y1−y2)2D22=(∣x1−x2∣+∣y1−y2∣)2=(x1−x2)2+2∣x1−x2∣∣...原创 2019-07-10 19:10:49 · 96 阅读 · 0 评论 -
Codeforces Round #573 (Div
题意:题目的意思还是比较好懂的—给定一个平面点集, 求用一个没有上界的矩形去框这些点有几种框法>> face << strategy: wa了几发,很容易把区间算重复, 其实可以这样想, 我们沿着y轴扫, 如果这一条线上只有一个点, 那么这个点对答案的贡献就很好求, 即囊括这一个点的区间数,在该点上方的空间里,横坐标小于等于该点的横坐标的坐标数乘上纵坐标大于等于该点的坐...原创 2019-07-15 14:11:51 · 78 阅读 · 0 评论 -
Educational Codeforces Round 67 -- D .subarray sorting
题意: 给定两个长度为N的序列a,b 每次操作可以将a的连续子序列[l, r]排序, 问能否通过若干操作使得序列a变成b题面Strategy: p[i] 代表/p[i] : 数组b内a[i]这个数出现的位置, 转化:将"子序列[l,r]排序" -> 若干len=2的操作 -> 通过相邻swap消除掉[l,r]中所有逆序对, 观察到操作"不会产生新的逆序对",即ans=yes的必...原创 2019-07-05 20:43:19 · 121 阅读 · 0 评论 -
牛客Laptop(离散+树状数组二维偏序)
题意 给定n个二元组, 求某种二元组–(x,y都不大于另一个二元组)的个数题面Strategy:先对其中一维离散化,然后按另一维升序排列,用树状数组统计前缀和#include<bits/stdc++.h>//#include<bits/extc++.h>// #define oo INT_MAX#define maxn 100009 #define _r...原创 2019-07-05 22:36:53 · 295 阅读 · 0 评论 -
Educational Codeforces Round 68 (Rated for Div
题意:给定若干平行与坐标轴的线段, 求这些线段组成的图形有多少个矩形>> face << Tutorial:这样考虑, 针对每个水平的线段, 我们需要维护这些垂直的线段:与该水平线段相交的垂直线段的最高点大于水平线段的高度于是我们就可以用权值树状数组来维护该水平线段上有多少条符合要求的线段, 然后再用一个vector装最高点, 于是我们就可以向上扫描, 若在...原创 2019-09-27 16:36:23 · 89 阅读 · 0 评论 -
Codeforces Round #574 (Div. 2)-E. OpenStreetMap
E. OpenStreetMap一句话题意: 给定一个nm的矩形, 让你求所有ab矩形内的最小值>> face << Strategy: 双重单调队列, 首先构造矩阵minn[i][j]代表h[i][j-b+1] ~ h[i][j]中最小的元素(用单调队列维护), 然后在从列里面找, 看在范围内的哪一列的最小值最小, 然后累加该值 大佬传送门#include &...原创 2019-10-06 20:50:56 · 91 阅读 · 0 评论 -
牛客网小白月赛:希望(线段树+01背包)
Intention:给定一个长度为n的含负数的数组M, 要求在给定cost中,使其中的一些负数变为0,并求出数组和maxStrategy: 用线段树维护每个数字改变的最小代价,然后得到cost数组,value就是每个负数的绝对值(对答案的贡献),最后跑一边01背包;Facecode:#include<bits/stdc++.h>// #include<bits/extc...原创 2019-06-18 13:16:56 · 166 阅读 · 0 评论 -
string_hash(字符串哈希)
本篇介绍一种可以在O(n)的预处理字符串所有的前缀hash值,并在O(1)的时间内查询它的任意字串hash值其实思想很简单,取一个固定的值 p,把字符串看作p进制数,并分配一个大于0的数值,代表每种字符。一般来讲,我们分配的数值都远小于p。这里我取的是 p = 131,此时hash值冲突的概率极低。(因为我们认为hash值相等的两段字符串是相同的,所以冲突的概率不能高)。还有一个...原创 2019-06-09 16:52:16 · 5859 阅读 · 0 评论 -
红黑树接口(pb_ds)水过普通平衡树BZOJ-3224
最近学平衡树,偶然发现了pbds这个库,里面有很多封装的很复杂的数据结构,各种平衡树,可并堆等。这篇文章主要讲一讲,平衡树套pb_ds这个模板的问题首先,我们要 include 一下我们的主角#include<bits/stdc++.h>#include<bits/extc++.h>using namespace std;using namespace __g...原创 2019-06-03 13:02:00 · 868 阅读 · 0 评论 -
poj 2796 单调栈(秒懂)
poj- 2796单调栈维护高度, 前缀和也要维护高度,这题可以看作求max(a[i] * (sum[r[i]] - sum[l[i]])), 其中l[i]和r[i],分别表示第i个数的左边、右边比他小的第一个数的下标:我知道你们只看这个#pragma G++ optimize(2)#pragma GCC optimize(2)#define DEBUG#include<io...原创 2019-05-02 13:09:06 · 317 阅读 · 0 评论 -
poj 1964 单调栈
poj- 1964 ,uva1330 contesthunter 1803city game(单调栈)O(n2)题意:求最大F子矩阵这一题可以看作二维的单调栈,枚举每一列的高度,然后每一列跑一遍单调栈,主要是处理输入以及矩阵的转换有些麻烦,具体情况请看代码:#pragma G++ optimize(2)#pragma GCC optimize(2)#define DEBUG#incl...原创 2019-05-02 16:20:36 · 160 阅读 · 0 评论 -
南昌邀请赛 - I Max answer(单调栈 + 线段树)
题面:这题如果a[i] > 0,则是一道经典的单调栈,如果针对a[i]大于0的情况不太清楚的话,可以参考我写的单调栈其他的题目,现在我们重点来讨论a[i] < 0的情况。如果a[i]小于零,则应该使得包含a[i]的区间和最小,即找到1~i区间上最大的前缀和lmax,和i-n区间上最小的前缀和rmin,然后两者相减得到最小的区间前缀和,很容易联想到用线段树来维护区间前缀的最值,这是...原创 2019-05-03 00:40:45 · 160 阅读 · 0 评论 -
树状数组contest hunter4201
CH - 4201楼兰图腾rt题意就是求数列上的若干个两种三元组的个数:三个点满足x1 < x2 < x3 && y1 > y2 && y3 > y2三个点满足x1 < x2 < x3 && y2 < y1 && y3 < y2这类似于求逆序对, 枚举每个yi, ’ ^ ...原创 2019-05-03 10:53:44 · 113 阅读 · 0 评论 -
POJ - 2182 (树状数组)
17/100发布文章有n(n <= 105)头奶牛,已知他们身高为1~n且个不相同, 但不知道奶牛的具体身高。现在这n头奶牛站成一列,已知第i头奶牛前面有a[i]头奶牛比他低,求每头奶牛的身高;对于最后一头牛,显然H[n] = a[n] + 1;对于第k头牛,他的身高应该是1到n中第ak+1小的没有在hk到hn中出现的数 (不要问我怎么知道的,这是书上写的,我看半天没看懂,tmd自...原创 2019-05-03 11:58:27 · 377 阅读 · 0 评论 -
最小生成树kruskal
Kruskal:Kruskal算法的思想比Prim好理解一些。先把边按照权值进行排序,用贪心的思想优先选取权值较小的边,并依次连接,若出现环则跳过此边(用并查集来判断是否存在环)继续搜,直到已经使用的边的数量比总点数少一即可。洛谷p3366#pragma GCC optimize(2)#include<cstdio>#include<cstring>#in...原创 2019-05-04 11:53:55 · 85 阅读 · 0 评论 -
poj - 4368
poj - 3468 线段树区间修改这题是个模板题, 很有代表意义,poj的数据确实有点庞大,tle 好久,最后还是两秒不到就过了。今天初学线段树区间修改,写个博客纪念一下,代码区间修改的代码还没有成熟,慢慢就好了,直接上码:#pragma G++ optimize(2)#pragma GCC optimize(2)#include<iostream>#includ...原创 2019-05-04 22:31:31 · 131 阅读 · 0 评论 -
洛谷 - P3373 线段树区间-修改(进阶)
本题作为模板题实在是太屈才了, 是一道很好的题目,做完以后本人对线段树有了更深的理解。单就此题而言,两种修改操作是互相影响的,修改乘法的时候是要先考虑加法的修改。为了避免这种先加后乘的影响,我们在打 lazy-tag的时候要注意 lson.add = (t[o].add + lson.add * t[o].p) % mod;即乘法之前先把加法的 lazy_tag 先乘出来,然后再更新加法的l...原创 2019-05-05 17:09:16 · 258 阅读 · 0 评论 -
Treap普通平衡树(秒懂)BZOJ-3224
当然,秒懂的前提是,你看了我的前一篇文章:我是传送门其实treap树能平衡的巧妙之处就在于,它利用了随机化权和堆性质来巧妙地控制zig&&zag的使用时机,能达到我们所期望的平衡。ckick_Me_to_view_the_questionfriendly commented codes:#include<bits/stdc++.h>#define oo ...原创 2019-06-01 13:02:03 · 164 阅读 · 0 评论 -
二叉搜索树(BST)数组模拟支持左旋右旋求前驱后继
引自lyd:BST给定一颗二叉树,树上的每个节点带有一个数值,称为节点的权,所谓的“BST性质”是指,对于树中任意一颗节点:1. 该节点的权不小于它的左子树中任意节点的权;2. 该节点的权不大于它的右子树中任意节点的权;即:val(lefttree) <= val(root) <= val(righttree) 显然,二叉查找树的中序遍历是一个权值单增的序列,笔者曾天真的以为,同样的节...原创 2019-05-30 01:28:11 · 510 阅读 · 0 评论 -
单调栈(两种方法)-poj2559
单调栈原创 2019-05-01 18:01:43 · 258 阅读 · 0 评论