![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Henry_WYH
兴趣使然
展开
-
P6018 [Ynoi2010] Fusion tree
1.从低到高建立01Trie来维护每个点的+1操作和所有点的异或和。丢个比较清晰的代码在这里,时间不早了,等到下次想起来再继续写。3 x:查询所有距离x点=1的所有值的异或和。1 x : 给距离x为1的所有的点+1。2.分别单独维护儿子和父亲。2 x y: x点值-y。原创 2022-11-01 23:46:46 · 332 阅读 · 2 评论 -
矩阵--单调队列
链接:https://ac.nowcoder.com/acm/problem/17060来源:牛客网题目描述矩阵 M 包含 R 行 C 列,第 i 行第 j 列的值为 Mi,j。请寻找一个子矩阵,使得这个子矩阵的和最大,且满足以下三个条件:子矩阵的行数不能超过 X 行。子矩阵的列数不能超过 Y 列。子矩阵中 0 的个数不能超过 Z 个。请输出满足以上条件的最大子矩阵和。输入描述:第一行输入五个整数 R,C,X,Y,Z。接下来 N 行,每行输入 M 个整数,第 i 行第 j 列的整数表示原创 2021-09-06 15:00:19 · 165 阅读 · 0 评论 -
Leetcode456. 132 模式
https://leetcode-cn.com/problems/132-pattern/这道题要查找是否存在132模式首先n^3的做法肯定会超时,因此我们需要加速查找对于任意一个nums[i],如何快速的得到a[j]和a[k]?用一个单调栈S维护3(大于a[i]的最大值)并用一个second_big维护次大值每次S弹出的值便是次大值当扫描到小于次大值的时候说明存在满足的条件class Solution {public: bool find132pattern(vector<.原创 2021-09-25 15:46:58 · 68 阅读 · 0 评论 -
*异或* 最小 ? 树
前几天VP了2020澳门赛区,被一道异或题摆了一道,因此今天找来几道异或的题目做一做,顺便总结一下。遇到异或的题目,如果性质很强而且每一位有显然相互独立互不影响的特点,我们常采用按位考虑的方法。但是遇到和这些好不相干的题目时,我们常使用01Trie(+分治)或者线性基的方法来处理。本文将浅谈一下前一种做法。首先是一道板子题,异或最小生成树CF888G. Xor-MST给定一个n个点组成的完全图,给定他们的点权,任意两个点之间的边权是二者之间的点权异或值,求完全图的最小异或生成树。通过思考很容易排除原创 2022-04-05 14:19:32 · 512 阅读 · 0 评论 -
Dancing Links 详解
Dancing Links 详解1.初始化部分:建立一行头节点第0行建立好一排空的头节点,完善好十字链表的各项信息。void init(){ for(int i=0;i<=m;++i){ l[i]=i-1,r[i]=i+1; u[i]=d[i]=i; } l[0]=m,r[m]=0; idx=m+1;}2.插入元素每次在第0行下面插入,虽然直观上行的顺序打乱,实际上是翻转了一下,不影响拓扑结构void add(int &原创 2022-02-26 13:23:20 · 408 阅读 · 0 评论 -
小翔和泰拉瑞亚——线段树
****这道题很巧妙,关键就是想明白,我们先对所有的修改按照左端点排序,然后遍历到某一个位置的时候我们假定这个位置是最低点,因此我们首先做的操作时将以此点为左端点的所有能够修改的区间全部修改了,因为前面的每个点也是这么做的,因此可以保证枚举到这个点并操作完后所有包含这个区间的魔法都被施展了,即这个最低点尽量的低。然后更新完答案后再将所有以这个点为右端点的操作全部撤销,即加上-d,这样子可以保证再更新下一个区间的时候能够使得所有不包含当前点的魔法不会被施展。总之,思维有深度,实现起来则非常容易。#d原创 2022-01-20 17:52:57 · 326 阅读 · 0 评论 -
根据给定key和val值构建Treap
根据给定key和value求Treap的方法:先按照key排序int top = 0;rep(i,1,n){ while(top && tr[s[top]].b < tr[i].b){ l[tr[i].id] = tr[s[top]].id; top --; } if(top) r[tr[s[top]].id] = tr[i].id; s[++top] = i;}武汉理工大学校赛https://a原创 2021-11-21 18:17:09 · 178 阅读 · 0 评论 -
二叉树的神级遍历:Morris遍历
Morris遍历一般的二叉树的递归遍历或者非递归遍历时间复杂度为O(n),空间复杂度为O(n)但是Morris遍历能够使得时间复杂度保持为O(n)的情况下空间复杂度为O(1)Morris遍历核心操作:当前指针为cur1)cur无左子树,cur = cur -> right;2)cur有左子树,先找到左子树的最右边结点 right_most 2)right_most 右指针为空,将该节点右指针指向cur,cur左移 3)right_most 右指针指向cur,回复其右指针原创 2021-10-17 15:09:09 · 102 阅读 · 0 评论 -
P1399 [NOI2013] 快餐店
https://www.luogu.com.cn/problem/P1399算法:基环树DP这道题是我学完基环树后自己做出来的第一道题目hh,虽然调了很久和这道题目有些类似的题目有IOI2008 Island 这题https://www.luogu.com.cn/problem/P4381下面来说这一题的思路:n点n边,任意两点之间都有一条双向边,因此这是一颗基环树,对于基环树DP的题目,我们首先做的应该是找到环并断开1.找环void dfs_s(int u,int fa){ s原创 2021-10-16 14:45:54 · 190 阅读 · 0 评论 -
AtCoder Beginner Contest 221 E - LEQ
算是学到了树状数组一种新的打开方式比赛的时候还在想怎么支持查找某个数,然后可以直接求幂和对于某个算出他和前面所有小于他的数的距离为k,然后快速求出2^k之和;显然是用树状数组:每次插入的时候并不是在对应位置+1,而是加一个逆元的i次幂,然后每次查询都将求得的结果乘上当前位置的2的幂即可∑2j−i−1=∑2j−1/2i\sum 2^{j-i-1}=\sum 2^{j-1}/2^{i}∑2j−i−1=∑2j−1/2i#include<unordered_set>#include<.原创 2021-10-02 23:42:25 · 145 阅读 · 0 评论 -
中缀表达式 递归版
#include<bits/stdc++.h>using namespace std;//================================#define debug(a) cout << #a": " << a << endl;#define N 100010//================================= int factor_value();int term_value();int expression原创 2021-09-29 11:33:40 · 171 阅读 · 0 评论 -
Splay_2维护序列 NOI2005
https://www.luogu.com.cn/problem/P2042一道很好的Splay练习题输入输出样例输入 9 8 2 -6 3 5 1 -5 -3 6 3 GET-SUM 5 4MAX-SUMINSERT 8 3 -5 7 2DELETE 12 1MAKE-SAME 3 3 2REVERSE 3 6GET-SUM 5 4MAX-SUM输出 -110110从LG上借鉴了坑点,一个一个对照找bug1.哨兵节点不要忘记加入,w[0]和w[n+1]都是-IN原创 2021-09-23 12:52:40 · 111 阅读 · 0 评论 -
Splay伸展树_1
https://www.luogu.com.cn/problem/P3391Splay伸展树 文艺平衡树引入区间翻转核心每一次操作一个节点,均将该节点旋转至树根,这样可以保证树的高度,并且当一个点被用到之后,此点之后再被用到的话则会降低时间复杂度板子拆解:存储struct Node{ int s[2]; //存储两个儿子 int fa,v,size; //父亲节点,额外信息 bool rev; //反转区间特有的信息}tr[N];int root,idx=0原创 2021-09-22 09:54:16 · 77 阅读 · 0 评论 -
势能线段树+弩蚊怒夏(详细思路)
势能线段树势能线段树势能:信息学中,势能被用于计算某一个过程,或者某一类过程时间复杂度的总和例如计算两个数之间的最大公倍数gcd的时间复杂度是O(log N),而计算n个数之间的时间复杂度是O(n+log N)总复杂度=数组循环遍历复杂度+gcd函数被调用的总复杂度势能均摊复杂度势能均摊复杂度是指把总的时间复杂度摊到操作次数或者循环次数上面在上述n个数之间的gcd的时间复杂度为:O(N+logC)N=O(1+(logCN))=O(1)\frac{O(N+logC)}{N}=O(1+(\原创 2021-09-03 16:59:24 · 511 阅读 · 2 评论