- 博客(107)
- 收藏
- 关注
原创 BZOJ 2119: 股市的预测 (Hash / 后缀数组 + st表)
转博客大法好自己画一画看一看,就会体会到这个设置关键点的强大之处了.CODE(sa)O(nlogn)→1436msO(nlogn)\to 1436msO(nlogn)→1436ms#include <bits/stdc++.h>using namespace std;typedef long long LL;template<class T>inline vo...
2019-03-31 22:38:33 211
原创 BZOJ 4278: [ONTAK2015]Tasowanie (后缀数组 / 二分+hash)
直接归并,然后如果哪边的后缀字典序比较小就去哪边,然后就可以后缀数组 博客传送门…但是本蒟蒻不会后缀数组于是就hash后二分找相同的最长区间,然后比较后一个谁更小…时间复杂度O(nlogn)O(nlogn)O(nlogn).注意先在最后加一个极大值.因为如果一个序列A到末尾刚好与序列B的一段相等,那么一定是取B更优,因为B后面可能有更小的.hack数据4 2 2 2 13 2 2 ...
2019-03-29 22:16:47 193
原创 BZOJ 3881[COCI2015]Divljak (AC自动机+dfs序+lca+BIT)
显然是用AC自动机先构建好AC自动机,当B中插入新的串时就在trie上跑,对于当前点,首先这个点所代表的串一定出现过,然后这个点指向的fail也一定出现过.那么我们把每个点fail当作父亲,建一棵fail树,那么到一个点一定会让fail树中这个点到根的路径所有点的答案+1.然后因为在同一个串中多次出现只算一次,那么就需要求这些到根的路径的并集.可以用树链剖分求区间交集做.但这道题我们只用单点查...
2019-03-29 21:33:25 170
原创 BZOJ 3173: [Tjoi2013]最长上升子序列 (线段树+BIT)
先用线段树预处理出每个数最终的位置.然后用BIT维护最长上升子序列就行了.用线段树O(nlogn)O(nlogn)O(nlogn)预处理就直接倒着做,每次删去对应位置的数.具体看代码CODE#include<bits/stdc++.h>using namespace std;char cb[1<<15],*cs=cb,*ct=cb;#define getc() ...
2019-03-29 08:06:03 355
原创 BZOJ 1109: [POI2007]堆积木Klo (LIS)
%%%PoPoQQQmdzz写错变量见祖宗#include<bits/stdc++.h>using namespace std;char cb[1<<15],*cs=cb,*ct=cb;#define getc() (cs==ct&&(ct=(cs=cb)+fread(cb,1,1<<15,stdin),cs==ct)?0:*cs++)...
2019-03-28 22:47:12 198
原创 BZOJ 3594: [Scoi2014]方伯伯的玉米田 (二维树状数组优化DP)
分析首先每次增加的区间一定是[i,n][i,n][i,n]的形式.因为如果选择[i,j](j<n)[i,j](j<n)[i,j](j<n)肯定不如把后面的全部一起加111更优.那么在前iii个位置用了jjj次操作的话,a[i]a[i]a[i]就变成了a[i]+ja[i]+ja[i]+j.可以列出DP方程式.设f[i][j]f[i][j]f[i][j]表示前i...
2019-03-28 21:32:55 178
原创 BZOJ 1818: [Cqoi2010]内部白点 (BIT + 扫描线)
就是求多条线段的交集,直接BIT+扫描线就行了CODE#include<bits/stdc++.h>using namespace std;char cb[1<<15],*cs=cb,*ct=cb;#define getc() (cs==ct&&(ct=(cs=cb)+fread(cb,1,1<<15,stdin),cs==ct)?0:...
2019-03-28 20:09:45 124
原创 BZOJ 1107: [POI2007]驾驶考试egz / Luogu P3463 [POI2007]EGZ-Driving Exam (树状数组 LIS)
能从iii走到所有跑道 相当于 能从iii走到111和nnn.边反向后就相当于 能从111和nnn走到iii.为了方便叙述,把111~nnn叫做x坐标,111~(m+1)(m+1)(m+1)叫做y坐标.然后我们将图上下翻转(yyy坐标)后,能从111走到iii的话一定经过i−1i-1i−1条向右的边,且这些边的yyy坐标不下降.那么我们设fl[i]fl[i]fl[i]表示从111走到iii...
2019-03-28 18:59:45 186
原创 BZOJ 2152 / Luogu P2634 [国家集训队]聪聪可可 (点分治/树形DP)
题意一棵树,给定边权,求满足两点之间的路径上权值和为3的倍数的点对数量.分析点分治板题,对每个重心求子树下面的到根的距离模3分别为0,1,2的点的个数就行了.CODE#include<bits/stdc++.h>using namespace std;char cb[1<<15],*cs=cb,*ct=cb;#define getc() (cs==ct&am...
2019-03-28 16:36:04 147
原创 BSGS 扩展大步小步法解决离散对数问题 (BZOJ 3239: Discrete Logging// 2480: Spoj3105 Mod)
我先转为敬
2019-03-28 15:16:48 269
原创 BZOJ 1758 / Luogu P4292 [WC2010]重建计划 (分数规划(二分/迭代) + 长链剖分/点分治)
题意自己看.分析求这个平均值的最大值就是分数规划,二分一下就变成了求一条长度在[L,R]内路径的权值和最大.首先这是一棵树,显然点分治是可写的然鹅我并不是很想(会)写点分治因此这里有另一种方法先对树长链剖分,我们像做dsu on tree一样先做长链,用线段树继承长链的全部信息,然后做其他儿子查询的时候枚举一下路径的长度len,左半边单点O(1)O(1)O(1)查询长度为len的最大...
2019-03-28 10:51:31 208
原创 [BZOJ 1095] [ZJOI2007]Hide 捉迷藏——线段树+括号序列(强..)
神做法…%dalao,写的超详细 konjac的博客.如果觉得上面链接的代买不够优秀好看,欢迎回来看本蒟蒻代码…CODE WITH ANNOTATION代码中−6-6−6表示左括号’[’,用−9-9−9表示右括号’]’.emmmm…#include<bits/stdc++.h>using namespace std;char cb[1<<15],*cs=cb,...
2019-03-27 22:46:56 264
原创 BZOJ 4003 / Luogu P3261 [JLOI2015]城池攻占 (左偏树)
左偏树裸题,在树上合并儿子传上来的堆,然后小于当前结点防御值的就pop掉,pop的时候统计答案.修改的话就像平衡树一样打懒标记就行了.具体见代码CODE#include<bits/stdc++.h>using namespace std;char cb[1<<15],*cs=cb,*ct=cb;#define getc() (cs==ct&&(...
2019-03-27 19:44:42 111
原创 Newnode's NOI(P?)模拟赛 第三题 (主席树优化建图 + tarjan)
题目/题解戳这里这道题题目保证a,b,ca,b,ca,b,c各是一个排列…mdzz考场上想到正解但是没看到是排列,相等的情况想了半天…然后写了暴力60分走人…由于两两间关系一定,那么就是一个竞赛图(完全图让每一条边都有向).显然就是tarjan.然后发现有很多边其实可以不存在,比如a>b>ca>b>ca>b>c,在竞赛图中就存...
2019-03-27 17:28:33 402
原创 Newnode's NOI(P?)模拟赛 第二题 dp决策单调优化
其实直接暴力O(n3)DP+O2O(n^3)DP+O_2O(n3)DP+O2优化能过…CODE先来个O(n3)O(n^3)O(n3)暴力DP(开了O2O_2O2)100分代码(极限数据0.5s0.5s0.5s)#include <cstdio>#include <cstring>#include <algorithm>using namespa...
2019-03-27 16:50:35 544
原创 Luogu P4331 [BOI2004]Sequence 数字序列 (左偏树论文题)
清晰明了%%% Fairycastle的博客个人习惯把size什么的存在左偏树结点内,这样在外面好写,在里面就是模板(只用修改update).可以对比一下代码(好像也差不多…)MY CODE#include <vector>#include <cstdio>#include <cstring>#include <algorithm>u...
2019-03-26 22:37:05 149
原创 BZOJ 2809: [Apio2012]dispatching(可并堆 左偏树板题)
这道题只要读懂题目一切好说.给出nnn个点的一棵树,每一个点有一个费用vvv和一个领导力aaa,给出费用上限mmm.求下面这个式子的最大值ax∗∣S∣ ( S⊂x的子树, ∑iv[i]≤m )\large a_x*|S|\ (\ S\sub x的子树,\ \sum_{i}v[i]\le m\ )ax∗∣S∣ ( S⊂x的子树,&nbs...
2019-03-26 21:23:03 134
原创 HDU 1512 Monkey King(左偏树模板题)
…左偏树模板.然后我MLE爆了…原因是修改堆顶元素是先取出来后合并进去,然后取出来的时候没有把儿子清空,然后merge内就栈溢出了…开始我写的指针,sb地以为是多组数据指针内存爆了,然后写回收内存…还是MLE,搞得我有指针恐惧症了…CODE#include <queue>#include <cstdio>#include <cstring>#in...
2019-03-26 20:00:20 141
原创 JZOJ 5987 仙人掌毒题 (树链剖分 + 容斥)
Here注意 每一次都O(n)O(n)O(n)一下算某些点都是黑点的概率其实并不是O(n2)O(n^2)O(n2),因为每个环只用算一次.#include <cctype>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef ...
2019-03-26 16:36:57 262
原创 JZOJ 5988 珂学计树题 (Burnside引理)
HereCODE#include <cctype>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 1000005;const int mod = 998244353;int phi[MAXN], p...
2019-03-26 16:16:59 212
原创 BZOJ 3626 [LNOI2014]LCA 树剖+(离线+线段树 // 在线+主席树)
BZOJ 4012 [HNOI2015]开店 的弱化版,离线了,而且没有边权(长度).两种做法1 树剖+离线+线段树这道题求的是一个点zzz与[l,r][l,r][l,r]内所有点的lcalcalca的深度之和.可以发现,dep[lca(u,v)]dep[lca(u,v)]dep[lca(u,v)]就等于从uuu到根与从vvv到根的路径的交集路径的长度.那么只要把[l,r][l,r][l,r...
2019-03-25 22:13:05 173
原创 BZOJ 2243: [SDOI2011]染色 (树剖+线段树)
树链剖分后两个区间合并的时候就判一下相交颜色是否相同来算颜色段数就行了.CODE#include <vector>#include <queue>#include <cstdio>#include <cctype>#include <cstring>#include <algorithm>using names...
2019-03-25 20:37:53 159
原创 BZOJ 1984: 月下“毛景树” (树链剖分+线段树)
注意赋值和加法的标记下传优先级.具体看代码.CODE#include <vector>#include <queue>#include <cstdio>#include <cctype>#include <cstring>#include <algorithm>using namespace std;type...
2019-03-25 19:34:52 196
原创 uoj30【CF Round #278】Tourists(圆方树+树链剖分+可删除堆)
…学习了一波圆方树学习了一波点分治学习了一波可删除堆(巧用 ? STL)传送门: Icefox_zhx注意看代码看怎么构建圆方树的.tips:tips:tips:圆方树内存记得开两倍CODE#include <vector>#include <queue>#include <cstdio>#include <cctype>...
2019-03-25 17:28:12 256
原创 BZOJ 3531: [Sdoi2014]旅行 (树剖+动态开点线段树)
对于每种信仰维护一棵动态开点线段树就行了…#include <cstdio>#include <cctype>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;inline void read(int &num) { c...
2019-03-25 11:36:31 133
原创 BZOJ 2836: 魔法树 (树链剖分+线段树)
板题…记得开longlong#include <cstdio>#include <cctype>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;inline void read(int &num) { char ch;...
2019-03-25 10:49:52 138
原创 BZOJ 2157: 旅游 (树链剖分+线段树)
树链剖分后线段树维护区间最大最小值与和. 支持单点修改与区间取反.直接写个区间取反标记就行了.线段树板题.(1A警告)#include <cstdio>#include <cctype>#include <cstring>#include <algorithm>using namespace std;typedef long long ...
2019-03-25 10:08:34 216
原创 BZOJ 4127: Abs (树链剖分 线段树求区间绝对值之和 带区间加法)
题意给定一棵树,设计数据结构支持以下操作1 u v d 表示将路径 (u,v) 加d(d>=0)2 u v 表示询问路径 (u,v) 上点权绝对值的和分析绝对值之和不好处理,那么我们开两棵线段树,一个存正数,一个存负数.然后对于两棵线段树,都要维护子树sz(有效节点数),sum(有效节点权值之和),lz(加法懒标记).特别的,因为负数可能会加到正数,那么修改一个区间的时候,询...
2019-03-25 08:46:25 684
原创 51nod 1850 抽卡大赛 (十二省联考模测) DP
O(n4)O(n^4)O(n4)的DP很好想,但是过不了.来看看O(n3)O(n^3)O(n3)的把. Freopen的博客CODE#include <cstdio> #include <cstring>#include <algorithm>using namespace std;const int MAXN = 205;const int mo...
2019-03-24 21:34:43 246
原创 BZOJ 3744 Gty的妹子序列 分块+树状数组
具体分析见 搬来大佬博客时间复杂度 O(nnlogn)O(n\sqrt nlogn)O(nnlogn)CODE#include <cmath>#include <cctype>#include <cstdio>#include <cstring>#include <algorithm>using namespace st...
2019-03-24 12:18:59 228
原创 BZOJ 3744 Gty的妹子序列 分块+树状数组+主席树
这个做法是O(nnlogn)O(n\sqrt nlogn)O(nnlogn)的主席树…(其实还有不用主席树,只用分块+树状数组的O(nnlogn)O(n\sqrt nlogn)O(nnlogn),因为常数小,快了一倍)CODE#include <cmath>#include <cstdio>#include <cstring>#include &...
2019-03-24 12:16:36 202
原创 BZOJ 3439: Kpm的MC密码 (trie+dfs序主席树)
题意略分析把串倒过来插进trietrietrie上, 那么一个串的kpmkpmkpm串就是这个串在trietrietrie上对应的结点的子树下面的所有字符串.那么像 BZOJ 3551/3545: [ONTAK2010]Peaks加强版 用dfsdfsdfs序+主席树就可以O(nlogn)O(nlogn)O(nlogn)解决查找子树第kkk小问题但是与 BZOJ 3551/3545: [...
2019-03-23 17:41:11 167
原创 指针带入函数时* 与 *& 的区别
戳这里根据我的自己理解,两种形式的指针代入进去后,指向的地址上存储的值都可以被改变.唯一的区别是指针本身指向的地址如果用*就不会被修改, 如果用 *& 则可以被修改.也就是说,指针与其他的数据类型并无差别.拿int举例,int变量储存的值就对应着指针指向的地址.int变量加上&后在函数中值可以被改变,指针加上&后在函数中指向的地址也可以被改变....
2019-03-23 17:27:38 1506
原创 BZOJ 3038: 上帝造题的七分钟2 / BZOJ 3211: 花神游历各国 (线段树区间开平方)
题意给出一些数,有两种操作。(1)将区间内每一个数开方(2)查询每一段区间的和分析普通的线段树保留修改+开方优化。可以知道当一个数为0或1时,无论开方几次,答案仍然相同。所以设置flag=1变表示这一段区间全是0/1,那么修改的时候直接暴力遍历线段树结点。因为一个数被开方到1,只会被开方很少的次数,所以说能过.CODE1上帝造题的七分钟2#include <cctype>...
2019-03-23 15:30:37 166
原创 BZOJ 3551/3545: [ONTAK2010]Peaks加强版 (Kruskal树+dfs序上的主席树+倍增)
Orz PoPoQQQ学到了维护子树信息的时候用dfsdfsdfs序套主席树节省线段树空间.学到了怎么用指针写可持久化线段树…emmm…CODE只贴上3551的代码#include <queue>#include <cctype>#include <cstdio>#include <cstring>#include <al...
2019-03-23 15:00:19 275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人