BZOJ
Roll_Keyboard
这个作者很懒,什么都没留下…
展开
-
BZOJ 2038 [2009国家集训队]小Z的袜子(hose) (莫队算法)
题意:给你n个数字,要进行m次查询,每次查询中,问l-r中,任意选两个数字且这两个数字相同的概率思路:第一次写莫队算法,莫队算法是一种暴力解决区间问题的一种算法。只有在区间没修改或修改的很少才能使用。 莫队算法其实很简单很暴力。如果我们知道了[l,r]区间的答案,那么我们就能o(1)地知道[l-1,r],[l,r-1],[l+1,r],[l,r+1]。这样的话,要知道[l’,r’]的答案,只要用一原创 2017-10-28 16:32:06 · 201 阅读 · 0 评论 -
spoj Qtree6/bzoj 3637 Query on a tree VI(树链剖分+线段树/LCT)
题意:思路:首先,我们要开两颗线段树,一颗表示,当前节点为白时,和子树所组成的最大联通块大小是多少,另一颗表示,当前节点为黑时,和子树所组成的最大联通块大小是多少。 那么我们查询点u的答案的时候,就向上找到最远的相同颜色的点v,点v所保存的答案就是u的答案(我们v为最远同色祖先)。 更新某个点u的颜色的时候,就是把u的父亲和最远同色祖先的父亲,这一条路径上的都更新(注意,黑白各更新...原创 2018-06-03 00:29:26 · 290 阅读 · 0 评论 -
bzoj 1503 郁闷的出纳员 (权值线段树或splay)
题意:思路: 因为工资修改值最多只有1e5,初始工资1e5+修改的2e5,那么其实我们只要开3e5的权值线段树就能维护了。对于加减钱,我们只要修改标准即可,对于加入人,只要让他的初始工资补上之前修改过得标准即可,而查询第k大,就是正常操作了。 为了方便操作,我们让初始工资钱成为1e5+1,...原创 2018-05-22 18:59:13 · 323 阅读 · 0 评论 -
bzoj 4129 Haruna’s Breakfast(树上带修莫队)
题意:思路:树上带修莫队+块状数组,基本上还是很裸的 但是写起来很麻烦,看到好多人硬是压到90多行,真是跪了 总体思路就是,树上询问和修改还是莫队,但是在查询的时候,肯定不能O(n)地去询问,而线段树因为莫队每次移动区间都需要修改,会让总体复杂度多出一个logn,所以在查答案的时候用块状数组维护,这样由块状数组产生的复杂度是O(nn−−√)O(nn)O(n\sqrt{n}),不会使...原创 2018-05-29 08:38:29 · 225 阅读 · 0 评论 -
bzoj 3052/洛谷 P4074/uoj 58 [WC2013]糖果公园(树上带修莫队)
题意:UOJ地址      洛谷地址 BZOJ因为版权挂了。。。思路:     比较裸的一道树上带修莫队,我们只要维护一下某个糖出现了几次,然后更新答案即可错误及反思:   &n原创 2018-05-29 14:10:32 · 334 阅读 · 0 评论 -
bzoj 1018 堵塞的交通traffic (线段树)
题意:思路:参考博客:https://www.cnblogs.com/MashiroSky/p/5973686.html 非常非常难写的线段树,不仅难想还难写。 首先,这个线段树维护的是什么,是该区域四个顶点的连通性 ...原创 2018-07-24 15:26:51 · 750 阅读 · 0 评论 -
洛谷P4097 bzoj3615 [HEOI2013]Segment(李超树)
题意:        两种操作,插入一个线段,或询问x=x0x=x0x=x_0时最大y对应的线段编号思路:       刚刚学了李超树就来A一下板子题,比起之前的题多了很多细节, 错误原创 2018-07-24 22:32:06 · 396 阅读 · 0 评论 -
bzoj 1103 大都市meg (dfs序+线段树)
题意: 一颗树,每条边权是1,两种操作,一种查询x到根的距离,一种把某边改为0思路: 对于一个边变了,那么影响的就是子树,所以dfs序+线段树就行了,这题对于时间要求很低,vector存边,每次暴力找答案也能A错误及反思:代码:...原创 2018-07-20 14:13:51 · 341 阅读 · 0 评论 -
luoguP3613/BZOJ4811 睡觉困难综合征/由乃的OJ
addwddaw原创 2019-05-06 17:34:41 · 182 阅读 · 0 评论 -
bzoj 1086 王室联邦 (dfs,构造)
题意:思路:     首先我们dfs,如果一个节点v的儿子u所在的子树大于等于B,那么就把这个子树当作一个省份,对于这种情况,省会是u,v其实都可以。如果一个儿子u所在的子树小于B,可以先暂存起来,继续遍历其他儿子,当暂存的数量大于等于B的时候,将暂存的都归为一个省,省会为v,因为会暂存的子树大小为B-1,所以这样产生的子树大小最大为2B-2,在...原创 2018-05-26 10:12:19 · 240 阅读 · 0 评论 -
bzoj 2152 聪聪可可 (树分治)
题意:一棵有边权的树,问有多少对点的简单路径权值和模3为0思路:简单的树分治,每次处理出重心后,处理出到重心的距离,然后为0的直接平方,1和2的相乘并乘2(因为(2,3),(3,2)算两对),然后删去不合法的对数,再删去重心。 重复以上过程就行了错误及反思:发现难的树分治不会,还是刷刷简单的慢慢来吧 还有,他们是怎么跑到100多的。。。代码:#inc原创 2018-04-13 16:43:47 · 193 阅读 · 0 评论 -
BZOJ 1878 [SDOI2009]HH的项链 (莫队算法)
题意:给你n个数字,然后查询某个区间有多少种数字思路:莫队裸题,用一个cnt维护区间数字的数量就能实现o(1)转移了错误及反思:代码:#include<bits/stdc++.h>using namespace std;const int maxn= 50000+10;const int maxm= 1000000+10;int pos[maxn];int cnt[maxm];int a原创 2017-11-01 16:41:12 · 310 阅读 · 0 评论 -
BZOJ 3289 Mato的文件管理(莫队+线段树/树状数组)
题意:思路:莫队+逆序数,思路还是很好想的,但是复杂度要纠结下。 对于[L,R]来说,向右边扩展,即变成了[L,R+1],就相当于只是在数组末端多了一个数,其他的操作也是同理,只要遵循,改变区间的时候,加上/减去比自己大的值即可 复杂度是莫队的o(nn‾√n\sqrt{n})乘以树状数组或者线段数查询的一个o(log(nn‾√)log(n\sqrt{n}))错误及反思:题目原创 2017-12-12 14:49:57 · 372 阅读 · 0 评论 -
bzoj 2120 数颜色(可持久化莫队)
题意:思路:第一次写带修莫队,感觉还是比较简单的,相对于普通莫队,带修莫队主要是加了一个时间标志。大致思路就是,因为区间内的东西要修改,那就干脆继续暴力的修改,把[L,R]的转移,看成[L,R,T]的转移,依旧是利用排序进行优化,可以说带修莫队依旧是个暴力的优化。 不过,这题有一个疑点,就是在查看许多的博客里面,对于带修莫队,都说block为n23n^{\frac{2}{3}}时带修莫队速度达到最原创 2017-12-14 19:53:04 · 347 阅读 · 0 评论 -
BZOJ 1036 树的统计Count(树链剖分)
题意:给你一棵树,n个节点,每个节点都有一个val,现在进行q次操作,操作有三种,第一种查询u到v的最大值,第二种,查询u到v的val和,第三种,将某个点修改val思路:树链剖分基本题,相比起前面几道树链剖分,这个题维护的是点,虽然我们从理论上来说,树链剖分是根据边来剖分的,但是其实我们维护的时候维护点更简单,所以这个题虽然写起来麻烦一点,但是逻辑上反而更顺 用两颗线段树分别维护最大值和最小值,和原创 2018-01-27 16:14:16 · 247 阅读 · 0 评论 -
bzoj2599/洛谷4149 [IOI2011] Race(树分治)
题意:洛谷的地址 给一棵树,每条边有权。求一条简单路径,权值和等于 K ,且边的数量最小。思路:这题bzoj下线了,就去洛谷上A的 其实是一个比较简单的点分治 但是这题和之前的点分治不太一样(这题),这里的要求和之前不一样,我们不能算完重心的情况再去算子树的情况了 我们换一个思路,我们先遍历一颗以重心的儿子为根的子树,然后和一个之前的num(num[i]表示,到重心距离为i时最少经过几个边)原创 2018-04-15 16:07:03 · 238 阅读 · 0 评论 -
BZOJ 2243 染色(树链剖分)
题意:思路:树链剖分+线段树合并 很明显的树链剖分,但是总体有点难维护,首先我们还是要利用树链剖分的性质,从根到叶的编号是从小到大的,那么我们就知道了,对于一对点,我们把其中一个点向他们的LCA向上爬的过程,所求线段树求出的区间是连续的,而对于两个区间,如果两区间连接处的端点颜色相同,就要让ans减一即可错误及反思:思路其实不难,但是出了bug就很难受,一看题就知道要20...原创 2018-04-22 17:06:50 · 191 阅读 · 0 评论 -
BZOJ 4034 树上操作(树链剖分)
题意:思路:这题让我对树剖的体会更加深入了 因为我们在组链(也就是划分轻重边)的时候,是使用dfs序来进行划分的,所以我们子树的节点也依旧是在一起的,也就是说,树剖的时候顺便标记下dfs完自己子树时候的标号,就可以顺便完成dfs序时的标号要求了错误及反思:这题没什么难的。。主要是对树剖的体会更深了代码:#include<bits/stdc++.h>using namespace std;con原创 2018-04-22 21:00:11 · 217 阅读 · 0 评论 -
bzoj 3626 LCA (树链剖分)
题意:思路:比较有意思的树链剖分 首先对于两个点lca的深度,我们发现就是两点和根的连线的重叠部分,那么我们就可以先把一个点到根的所有点都染下色,再用另一个点去查看到根有几个点被染色了 然后想怎么处理那么多区间,根据之前说的,我们可以把[l,r]中所有的点都看作第一个点,z看作第二个点,这样我们离线了提问,然后一边把点放进去一边查询即可错误及反思:l是可以为0的,bzoj有时候数据不会给的很细致原创 2018-04-23 13:19:23 · 195 阅读 · 0 评论 -
b2324/luogu4542 [ZJOI2011]营救皮卡丘
题意: 中文题思路:首先,如果要探寻新的点,假设i->j,一定是走的路径上比他们小的点过去的,并且在这个条件下,一定是走的最短路。这个过程可以使用floyd完成。对于i<j,假如能够到达,那么就建立一条长度为跑完floyd的dist[i][j]。那么现在问题就变成了最多使用k条路径覆盖整个dag,并且要求花...原创 2019-07-16 15:30:50 · 294 阅读 · 0 评论