------数据结构------
qq_43520313
这个作者很懒,什么都没留下…
展开
-
区间GCD
题目:给nnn个数,最大值为MAXMAXMAX,用nlogMAXnlog^{MAX}nlogMAX的算法预处理区间gcdgcdgcd思路:当右端点确定时,左端点越往左,gcdgcdgcd非递增,并且如果减小,则每次至少除222,所以gcdgcdgcd的个数最多logMAXlog^{MAX}logMAX个,所以我们可以dpdpdp预处理出每种gcdgcdgcd的最左端点。用vectorvectorvector存(x,y)(x,y)(x,y),xxx表示gcdgcdgcd,yyy表示左端点,左端点从大到小原创 2020-10-10 12:04:21 · 299 阅读 · 0 评论 -
二维树状数组
void update(int x,int y,ll d){ while(x<=n){ int tmp=y; while(tmp<=m) c[x][tmp]+=d,tmp+=tmp&-tmp; x+=x&-x; }}ll query(int x,int y){ ll res=0; while(x<=n){ int tmp=y; whil原创 2020-10-29 13:57:50 · 75 阅读 · 0 评论 -
线段树模板
https://www.luogu.com.cn/problem/P3373#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=200009;int n,m;ll p,sum[N<<2],add[N<<2],mul[N<<2];void pushdown(int o){ int lc=o<<1,rc=o<<1|1;原创 2021-04-08 13:34:04 · 123 阅读 · 0 评论 -
D 动态序列
题目https://ac.nowcoder.com/acm/contest/13504/D给出n(1≤n≤100000)n(1\le n\le 100000)n(1≤n≤100000)个整数ai(1≤ai≤109)a_i(1\le a_i\le 10^9)ai(1≤ai≤109)的序列,有q(1≤q≤105)q(1\le q\le 10^5)q(1≤q≤105)个询问,设序列长度为lenlenlen,序号从111开始,每个询问有如下操作:1 b:序列中所有数乘以整数b(1≤b≤109)1原创 2021-03-28 20:49:19 · 192 阅读 · 0 评论 -
最近公共祖先
#include<bits/stdc++.h>using namespace std;const int N=100009;int n,f[N][20],t,d[N];vector<int>w[N];void bfs() { queue<int>q; memset(d,0,sizeof(d)); d[1]=1,q.push(1); while(q.size()) { int x=q.front(),si;原创 2020-11-10 15:51:40 · 85 阅读 · 0 评论 -
树的直径
#include<bits/stdc++.h>using namespace std;const int N=100009;struct node { int to,di; node(int x,int y):to(x),di(x) {}};int n,ans=0,d[N];vector<node>w[N];void dfs(int x,int fa) { int si=w[x].size(); d[x]=0; for(int i原创 2020-11-10 15:33:04 · 66 阅读 · 0 评论 -
这是二叉搜索树吗?
题目:https://pintia.cn/problem-sets/994805046380707840/problems/994805070971912192一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍原创 2020-11-09 21:28:26 · 237 阅读 · 0 评论 -
Be Geeks!
题目:https://ac.nowcoder.com/acm/contest/7817/B给你nnn个数,设G(i,j)=gcd(ai,ai+1...aj)G(i,j)=gcd(a_i,a_{i+1}...a_j)G(i,j)=gcd(ai,ai+1...aj),M(i,j)=max(ai,ai+1...aj)M(i,j)=max(a_i,a_{i+1}...a_j)M(i,j)=max(ai,ai+1...aj),计算∑1≤i≤j≤nG(i,j)⋅M(i,j)\sum_{1\le i\原创 2020-10-07 15:50:41 · 189 阅读 · 0 评论