![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
wzf_2000
这个作者很懒,什么都没留下…
展开
-
【BZOJ4822】 [Cqoi2017]老C的任务
此题本来是一个很好的二维线段树模板题,然而居然卡空间(至少洛谷上是的)。以下是二维线段树写法(大概70分):#include #define gc getchar()#define N 100009#define M 16000009#define mp make_pair#define pb push_back#define sz(x) (int)x.size()#defi原创 2017-05-07 14:25:22 · 456 阅读 · 0 评论 -
【Codeforces696E】...Wait for it...
一个一个删,树剖线段树上维护即可。#include <bits/stdc++.h>#define gc getchar()#define ll long long#define mid (l+r>>1)#define inf (ll)2e18#define N 100009#define root 1,1,n#define lc cur<<1#define rc lc|1#defi原创 2017-10-26 14:16:28 · 292 阅读 · 0 评论 -
【Codeforces633H】Fibonacci-ish II
这题显然需要莫队,然后我就想着用非旋转treaptreap骗过去,然后光荣TLE了。(感觉我复杂度似乎也是错的可能)#include <bits/stdc++.h>#define gc getchar()#define ll long long#define N 30009#define rd(x) ((rand()*23333+rand())%(x))using namespace st原创 2017-10-25 17:01:06 · 348 阅读 · 0 评论 -
【Codeforces319E】Ping-Pong
因为这题是区间之间的连边以及询问连通性之类的,所以考虑用线段树维护区间的并查集。 然后由于一些不可知原因MLE了,然后我改成动态开点的就好了。(smg??) 中间边界值太复杂,并没有思考过。#include <bits/stdc++.h>#define gc getchar()#define ll long long#define mid (l+r>>1)#define inf 1e9原创 2017-10-25 16:52:26 · 598 阅读 · 0 评论 -
【Codeforces587E】Duff as a Queen
题意: 区间异或一个数,区间询问能异或出几个数。线性基应该有个性质,里面有nn个数,就可以异或出2n2^n个数。 然后如果暴力O(log2n)O(log^2n)合并两个线性基,似乎区间异或会炸。 然后你差分一下,就变成单点加了。然后再写一个树状数组支持单点查询ll位置的值就好了。#include <bits/stdc++.h>#define N 200009#define T 32#de原创 2017-09-27 08:03:14 · 988 阅读 · 0 评论 -
【Codeforces193D】Two Segments
枚举线段树lazy标记维护即可。(似乎有点太久远了)#include <bits/stdc++.h>#define N 300009#define gc getchar()#define ll long long#define mid (l+r>>1)using namespace std;int n,a[N],pos[N];ll ans;int dl[N],dr[N],now[N]原创 2017-09-26 17:08:45 · 321 阅读 · 0 评论 -
【bzoj3641】货车运输
此题就是在基环树上的询问答案分为两部分,一部分是以询问限速开过的时间,一部分是以当前路的限速开过的段。考虑离线,每次讲限速小于当前询问的限速的路段权值修改。S->T如果在去环后在同一棵树上,就直接树链+树状数组。如果不在同一棵树上就取他们到根路径的权值和和环上两种走法的较小值作为答案。环上边另开树状数组即可(claris只去一条边变为一棵树的太神了)#include原创 2017-08-04 09:20:57 · 575 阅读 · 0 评论 -
【bzoj3637】Query on a tree VI
似乎是code chef上的题,不知为何bzoj也有。题意:每个节点有颜色,刚开始可能是白色,每次修改一个点的颜色,或者询问一个点所在同色连通块的大小此题考虑维护一个点只考虑其子树时,颜色为白色和黑色的连通块大小。显然需要树链剖分+树状数组然后询问就是跳到深度最小的跟它同色的祖先。修改也是同理。然后考虑怎么找到深度最小的同色祖先。每次判断所在重链是否全为它的颜色。若是,原创 2017-08-04 09:14:13 · 305 阅读 · 0 评论 -
【bzoj4373】算术天才⑨与等差数列
判断区间是否构成等差数列:极差=k*(len-1),差分gcd=k,没有相同的值。(还有一种,似乎是判断最小值,和,平方和,可能简单点)然后极差就是最小值跟最大值,跟差分gcd都比较容易维护。但坑的是没有相同的值的判定。(似乎有人没写过了?excuse me?)然后假装我们知道(维护)了一个值表示一个区间的数中上一个出现位置最晚的那个的位置(Mpre),就可以轻易用线段树轻松秒掉。原创 2017-08-04 09:07:29 · 277 阅读 · 0 评论 -
【codechef】Fibonacci Numbers on Tree
此题有两种做法。维护类Fibonacci前两项或者变为4个等比数列。 我用后一种,死活过不去。跟miaom前一种AC程序拍不出错。 有知道的请在评论中告诉我,非常感谢。原创 2017-08-05 09:41:25 · 466 阅读 · 0 评论 -
【Codeforces717F】Heroes of Making Magic III
以下根据网上大佬们的博客。 消除完一个区间肯定有一大堆方法,不妨考虑其中一种: 先前两个之间反复横跳,消除光第一个,然后再消除第二个,直到消除完。 然后我们可以根据这个列出不等式和方程: al≥1al+1−al≥0al+2−al+1+al≥1⋯ar−ar−1+⋯≥[(r−l+1)≡1(mod2)]ar−ar−1+⋯=(r−l+1)mod2a_l\ge1\\a_{l+1}-a_l\ge0\\a原创 2017-10-26 14:39:43 · 350 阅读 · 0 评论