随笔分类 -  ACM / 数据结构

摘要:#include <iostream> #include <cstring> #include <vector> using namespace std; const int MAX = 6; struct Tree{ double L, R; //树的左边和右边的长度 Tree():L(0), R 阅读全文
posted @ 2021-10-11 19:13 旅玖旅玖 阅读(45) 评论(0) 推荐(0)
摘要:#include<iostream> #include<cmath> #include<algorithm> #include<cstring> #include<queue> using namespace std; typedef long long ll; const int NS=5e5+5 阅读全文
posted @ 2021-08-24 12:52 旅玖旅玖 阅读(32) 评论(0) 推荐(0)
摘要:RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值。 本文介绍一种比较高效的ST算法解决这个问题。ST(Sparse Table)算法可以在O(nlo 阅读全文
posted @ 2021-08-07 11:02 旅玖旅玖 阅读(79) 评论(0) 推荐(0)
摘要:#include<bits/stdc++.h>typedef long long ll;using namespace std;ll n;ll lowbit(ll a){ return a&-a;}int tree[50000];void update(ll a,ll b){ while(a<=n) 阅读全文
posted @ 2021-07-26 14:11 旅玖旅玖 阅读(55) 评论(0) 推荐(0)
摘要:题意:给出b[i]的计算公式,第i回合加上b[i]这个数,第i回合的结果为所有区间最小值的和。求所有回合结果的异或值。 思路:维护一个递增的单调栈,保证弹出的数都比b[i]大,那么这些数在包含b[i]的区间里面都不会被计算到。 单调栈里面维护这个数的值,以这个数为右端点的区间最小值和,下标。 ID 阅读全文
posted @ 2021-04-15 20:00 旅玖旅玖 阅读(458) 评论(0) 推荐(0)
摘要:线段树是什么??线段树怎么写?? 如果你在考提高组前一天还在问这个问题,那么你会与一等奖失之交臂;如果你还在冲击普及组一等奖,那么这篇博客会浪费你人生中宝贵的5~20分钟。 上面两句话显而易见,线段树这个数据结构是一个从萌新到正式OI选手的过渡,是一个非常重要的算法,也是一个对于萌新来说较难的算法。 阅读全文
posted @ 2021-03-03 18:09 旅玖旅玖 阅读(71) 评论(0) 推荐(0)
摘要:解题思路: 这道题是并查集题目中的经典。。。而且比普通并查集提高了一个档次,下面在基础并查集的前提上讲解并查集的真正用法。 基础回顾: find()函数找根结点的两种写法如下: 第一种递归: int find(int x){ return x == pre[x] ? x : find(pre[x]) 阅读全文
posted @ 2021-03-03 09:52 旅玖旅玖 阅读(71) 评论(0) 推荐(1)