数据结构
Dlkoiw
这个作者很懒,什么都没留下…
展开
-
神奇的操作
神奇的操作仔细思考后发现本题没有什么办法,但是仔细想想好像记忆化可以过(因为每次/2或/3,-1的操作尽量不用),但是,1e9好像没办法记忆化,然后就只能碰碰运气,加个优化不记忆化能过吗?qwq——显然过不了可以当个套路来记,用map记忆化#include<bits/stdc++.h>using namespace std;typedef long long ll;int n;int f1[33],f2[25];map <ll ,int > mp; ll ksm(原创 2020-10-28 18:14:45 · 94 阅读 · 0 评论 -
永无乡
永无乡怎么感觉一道省选题比一道模板题还水n<=1e5,所以考虑线段树合并,然后本题直接对每个点建线段树就做完了n<=1e5,所以考虑线段树合并,然后本题直接对每个点建线段树就做完了n<=1e5,所以考虑线段树合并,然后本题直接对每个点建线段树就做完了#include<bits/stdc++.h>using namespace std;const int N=1e5+2;int n,m,tnt=0;int p[N],rt[N],ss[N];int fa[N];原创 2020-10-13 18:16:35 · 160 阅读 · 0 评论 -
Lomsat gelral
Lomsat gelralCF 600E写几个注意点push_up操作直接在函数内做,不然不好统计空间复杂度是O(nlogn),所以在合并子树时要尽量节省空间#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;int tnt=0,rt[N];int n,colr[N],cnt=0,head[N];struct edge{ int link,v;}q[N&原创 2020-10-12 18:48:05 · 136 阅读 · 0 评论 -
可持久化线段树
可持久化线段树可持久化线段树就是对[1,n]的每一个i,都建一颗线段树,然后为了省空间就复制了一部分的树#include<bits/stdc++.h>using namespace std;const int N=2e5+5;struct zxs{ int l,r,sum,ed;}q[N*18*4];int n,m,a[N],b[N],c[N],cnt=0;int rt[N];int newnode(int id){ q[++cnt]=q[id]; return cnt原创 2020-10-08 15:45:44 · 195 阅读 · 0 评论 -
最大后缀值个数
最大后缀值个数本题看看数据范围其实就大概知道怎么做,然后发现是单调的,直接单调栈就行了本题有个很坑的细节(其实是我打得太烂了,调了很久没跳出来,一直80分)#include<bits/stdc++.h>using namespace std;const int N=1e6+5;int n;int val[N],f[N],head[N],tnt=0;struct edge{ int link,v;}q[N<<1];void put(int x,int y){原创 2020-10-06 23:17:48 · 350 阅读 · 0 评论 -
PiPi 家族
PiPi 家族仔细想想,好像排序挺管用的,所以就对depth[s]+a[s]排序,因为可以发现若v∈son[s],其中son[s]表示s的子树,仔细想想,好像排序挺管用的,所以就对depth[s]+a[s]排序,因为可以发现若v∈son[s],其中son[s]表示s的子树,仔细想想,好像排序挺管用的,所以就对depth[s]+a[s]排序,因为可以发现若v∈son[s],其中son[s]表示s的子树,若有a[s]+depth[s]>a[v]+depth[v],因为子树要先被访问,所以v一定不会为答原创 2020-09-18 22:12:01 · 160 阅读 · 0 评论 -
树
树这道题虽然已经做过多次,但比赛时还是不会做。看了题解之后,我觉得要是我自己想肯定是做不出来的 qwq————————————————————————————————f[i]表示i到fath[i]的期望步数,g[i]表示fath[i]到i的期望步数仔细想想这个做法挺显然的,因为要输入多组u,v,所以只有这样才能在log的时间里求出期望长度仔细想想这个做法挺显然的,因为要输入多组u,v,所以只有这样才能在log的时间里求出期望长度仔细想想这个做法挺显然的,因为要输入多组u,v,所以只有这样才能在lo原创 2020-09-14 18:41:43 · 102 阅读 · 0 评论 -
Removal
Removal树状数组根据题意,可以看出可以把原题变成一条链,将询问按左端点排序,从1−2n−1扫,再进行树状数组(遇到一个数,就先加进树状数组,如果前面出现过再−1),用树状数组求和统计答案根据题意,可以看出可以把原题变成一条链,将询问按左端点排序,从1-2n-1扫,再进行树状数组(遇到一个数,就先加进树状数组,如果前面出现过再-1),用树状数组求和统计答案根据题意,可以看出可以把原题变成一条链,将询问按左端点排序,从1−2n−1扫,再进行树状数组(遇到一个数,就先加进树状数组,如果前面出现过再−1)原创 2020-07-27 16:05:53 · 272 阅读 · 0 评论 -
楼房重建
楼房重建我们发现能不能看到一件楼房就要看前面有没有比它斜率大的楼房我们发现能不能看到一件楼房就要看前面有没有比它斜率大的楼房我们发现能不能看到一件楼房就要看前面有没有比它斜率大的楼房而看数据范围,是可以存斜率的,所以很自然地分治一下(类似线段树)而看数据范围,是可以存斜率的,所以很自然地分治一下(类似线段树)而看数据范围,是可以存斜率的,所以很自然地分治一下(类似线段树)算出左边看过去可以看...原创 2019-12-10 18:19:31 · 266 阅读 · 0 评论 -
线段树2(模板)
突然发现以前很多模板题没打,就过来补一补线段树2线段树2主要基于这样一个思想——即乘法运算可以将tag和tree值同时乘,然后像线段树1一样打就行了线段树2主要基于这样一个思想——即乘法运算可以将tag和tree值同时乘,然后像线段树1一样打就行了线段树2主要基于这样一个思想——即乘法运算可以将tag和tree值同时乘,然后像线段树1一样打就行了即tag1[i]为乘法打的tag,tag2[i...原创 2019-11-28 18:39:33 · 175 阅读 · 0 评论 -
distances sum
distances sum这道题要考虑两颗树,因为不可能同时考虑两颗树,不妨先处理好一颗树,在搜索第二颗树的时候顺便更新答案——————————————————————————————————————具体地,我们先dfs一一棵树,记录来到这个点和离开这个点的dfs序(这样方便计算子树的区间),然后用来到这的dfs序建立树状数组(当然也可以用线段树),这样,我们就可以通过树状数组知道一棵树的子...原创 2019-11-13 22:00:48 · 154 阅读 · 0 评论 -
Add on a tree
Add on a tree因为是任意给数都要实现,所以如果有出度为2的点肯定不行,因为这样叶节点一次至少控制两条边,要修改这两条边又只能经过这个叶节点,满足不了任意————————————————————————————————————而其他情况都是可以的,一个至少2个子节点的节点为A,子节点为B,C因为加的是实数,所以我们发现我们可以使AB和AC边一个边为0,另一个变得和上面的边一样,...原创 2019-11-02 11:15:07 · 152 阅读 · 0 评论 -
Surgey and subway
Surgey and subway先列式子,∑i=1n∑j=1ndis(i,j)=∑i=1n∑j=1n⌈dist(i,j)2⌉先列式子,\sum_{i=1}^n\sum_{j=1}^ndis(i,j)=\sum_{i=1}^n\sum_{j=1}^n \left\lceil \dfrac{dist(i,j)}{2}\right\rceil先列式子,∑i=1n∑j=1ndis(i,j)=∑i...原创 2019-11-08 19:02:04 · 132 阅读 · 0 评论 -
The Mixinum Subtree
The Mixinum Subtree因为题目保证输入的是一颗树,所以我们可以dfs寻找.,我们要找的方案肯定的树,肯定是非两端的链的子树的深度一定不超过2,因为超过2.那么一定会构成环,手画就可以证明了因为题目保证输入的是一颗树,所以我们可以dfs寻找.,我们要找的方案肯定的树,肯定是非两端的链的子树的深度一定不超过2,因为超过2.那么一定会构成环,手画就可以证明了因为题目保证输入的是一颗树,...原创 2019-11-08 21:51:12 · 91 阅读 · 0 评论 -
游戏
游戏都快CSP复赛了,我发现我贪心还是不好。。。。上来先来个dp,发现写了个假结论。。。——————————————————————————————————————其实这题应该考虑贪心,我们枚举3个数为例子,i,j,k,发现直接去k的价值和间接去k的价值分别为枚举3个数为例子,i,j,k,发现直接去k的价值和间接去k的价值分别为枚举3个数为例子,i,j,k,发现直接去k的价值和间接去k的...原创 2019-10-31 22:21:42 · 147 阅读 · 0 评论 -
小鱼比可爱(高精度)
小鱼比可爱对于区间[l,r]的逆序对个数,可能贡献多次,发现正常求逆序对的操作是离散化后套树状数组,每个数的贡献为1,但本题的逆序对不直贡献一次,又因为[l,r]会变化,所以不妨固定一个值(固定r),在树状数组中每次加的贡献为(n−i+1)对于区间[l,r]的逆序对个数,可能贡献多次,发现正常求逆序对的操作是离散化后套树状数组,每个数的贡献为1,但本题的逆序对不直贡献一次,又因为[l,r]会变化...原创 2019-10-04 20:11:31 · 213 阅读 · 0 评论 -
市场
市场本题其实就是道线段树裸题,下去整操作可以装换为数字相等时的区间减法关键是怎么算出时间复杂度时间复杂度因为每次除数至少为2,所以一个数最多除log次因为每次除数至少为2,所以一个数最多除log次因为每次除数至少为2,所以一个数最多除log次由于存在加法,所以不能直接说明只能log次。由于存在加法,所以不能直接说明只能log次。由于存在加法,所以不能直接说明只能log次。若最大值小于...原创 2019-10-05 21:00:11 · 93 阅读 · 0 评论