随笔分类 -  BZOJ

摘要:#题意 一个1e5的double数组,前面大的元素会挡住后面小的元素,有1e5个操作,每次改变一个元素的值,问你每次改完之后有多少元素没有被挡 #思路 考虑分块,对每一个块维护一个单独的答案,那么总的答案一定是各块单独的答案的一部分合起来 每次修改之后只需要重新计算本块的答案,并且对每一块二分接上的 阅读全文
posted @ 2020-05-28 16:59 wrjlinkkkkkk 阅读(127) 评论(0) 推荐(0)
摘要:#题意 给你一组正整数,从i位置可以走到i+a[i],两种操作: 1.从x走几步能走出n 2.将某个a[x]改为y #思路 考虑分块,分块大小为根号n,那么每个点需要处理:出本块需要的步数、出本块到达的地方 对于每一块内的元素,维护的这两个信息都是独立的 那么对于操作1:模拟一遍块间移动即可,复杂度 阅读全文
posted @ 2020-05-27 22:36 wrjlinkkkkkk 阅读(154) 评论(0) 推荐(0)
摘要:#题意 1e6的数组,1e6组询问,每次问你[l,r]内有多少个数出现超过了1次 空间128M #思路 主席树可以很轻松地解决这个问题,但是1e6,128M显然空间是不够的,所以我们要找别的方法 数组长度有1e6,根号级的算法也不能使用 我们考虑离线: 在左端点不变时,考虑用树状数组维护右端点在不同 阅读全文
posted @ 2020-05-26 13:04 wrjlinkkkkkk 阅读(150) 评论(0) 推荐(0)
摘要:题意 一颗1e5的数,1e5的询问,两种操作: 1.给x到y的所有点染成一种颜色 2.问x到y的路径上有多少段相同的颜色 思路 先考虑序列上,12操作均可以使用线段树来处理 需要注意的是,询问时只有在线段树上往两边同时下传的时候,才需要判断是否x需要答案 1 所以写的时候分三段写比较方便 阅读全文
posted @ 2020-05-14 12:34 wrjlinkkkkkk 阅读(193) 评论(0) 推荐(0)
摘要:#题意 2000个点的带边权的树,其中m个点染黑色,其他点染白色,问你怎么染可以让任意两个同色的点的距离之和最小 #思路 经典的套路 先看每一条边的贡献,对于每条边(x,y),其中fa[y]=x 那么如果y子树的染色数确定,这条边的贡献也就确定了 令f[i][j]为i这棵子树染了j个黑点的答案,那么 阅读全文
posted @ 2020-04-30 00:52 wrjlinkkkkkk 阅读(34) 评论(0) 推荐(0)
摘要:题意 1e5的数组,1e5的询问,每次给你的长度相同(v; int getid(ll x){ return lower_bound(v.begin(),v.end(),x) v.begin()+1; } sets[maxn]; int main() { po[0]=1; scanf("%d %d % 阅读全文
posted @ 2020-03-30 00:14 wrjlinkkkkkk 阅读(117) 评论(0) 推荐(0)
摘要:题意 5e4个可重集合,初试全空,5e4个操作: 1.在第[l,r]集合里加入一个数c 2.问[l,r]所有集合的并的第k大数 思路 发现很多题解都写得权值线段树套区间线段树啊,我觉得这题反过来套比较直白吧。。 不过写了一半陷入了奇怪的思维漩涡里。。 就跟着题解写了个权值套区间线段树,在luogu上 阅读全文
posted @ 2020-03-01 01:35 wrjlinkkkkkk 阅读(145) 评论(0) 推荐(0)
摘要:题意 给nv; int find(ll x){ return lower_bound(v.begin(),v.end(),x) v.begin()+1; } ll P[maxn],L[maxn],R[maxn]; vectorin[maxn],out[maxn],hv[maxn]; ll Padd, 阅读全文
posted @ 2020-02-02 21:26 wrjlinkkkkkk 阅读(144) 评论(0) 推荐(0)
摘要:题意 问长度为n的1~n的排列,且逆序对为k的方案数有多少 $n,k\leq 1000$ 思路 假设前$1$~$i$已经排列好,此时逆序对为$k$,那么我们来讨论插入$i+1$时候的状态 $i+1$根据插入位置的不同,可以产生$0$到$i$个逆序对 根据这个特点我们设$dp[i][j]$为前$i$个 阅读全文
posted @ 2019-09-19 16:59 wrjlinkkkkkk 阅读(160) 评论(0) 推荐(0)
摘要:换markdown写了。。 题意: 给你一个1e5的字符串,1e5组询问,求$[l_1,r_1]$的所有子串与$[l_2,r_2]$的lcp 思路: 首先可以发现答案是具有单调性的,我们考虑二分答案,二分的范围显然为$[0,min(r_2 l_2+1,r_1 l_1+1)]$ 对于二分到的字符串长度 阅读全文
posted @ 2019-09-11 16:18 wrjlinkkkkkk 阅读(290) 评论(0) 推荐(0)
摘要:题意: 把所有循环字符串的后缀排名,输出这n<1e5个排名的最后一个字符 思路: 将该字符串拼接,按照排名顺序输出后缀开头在前一个字符串的情况中的“最后一个字符”即可 代码: 阅读全文
posted @ 2019-09-06 16:40 wrjlinkkkkkk 阅读(173) 评论(0) 推荐(0)
摘要:题意: 给你一些x*y的土地,分成一组一组购买土地,其代价为这组里的max{x}*max{y},问你全部买下最少多少钱 思路: 有一个土地为x1*y1,如果存在一个x2*y2,且x1<=x2&&y1<=y2,那么我们就不需要考虑x1*y1的土地了 这样我们可以处理出一个x单调递增,同时y单调递减的数 阅读全文
posted @ 2019-08-06 21:41 wrjlinkkkkkk 阅读(150) 评论(0) 推荐(0)
摘要:题意: 有一个1e6的数组,t次操作:将[l,r]内的值增加w,或者查询[l,r]内的值大于等于add的 思路: 分块,块大小为sqrt(n),每次只需要暴力头尾两块,中间的整块打标记, 对于查询查操作,块内排序然后二分即可 复杂度O(T(sqrt(n)+sqrt(n)logn)) 代码: 可以弄两 阅读全文
posted @ 2019-07-15 15:35 wrjlinkkkkkk 阅读(290) 评论(0) 推荐(0)
摘要:题意: 给一个2e4带正边权的图,可以免费k个边,一条路径的花费为路径上边权最大值,问你1到n的最小花费 思路: 对于一个x,我们如果将大于等于x的边权全部免费,那么至少需要免费的边的数量就是 “设大于等于x的边权的边长为1,其余为0,起点到终点的最短路” 然后如果这个得到的最短路,也就是我们所需要 阅读全文
posted @ 2019-07-14 21:16 wrjlinkkkkkk 阅读(198) 评论(0) 推荐(0)
摘要:题意: 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 思路: 处理出这棵树的欧拉序 阅读全文
posted @ 2019-07-08 23:21 wrjlinkkkkkk 阅读(300) 评论(0) 推荐(0)
摘要:题意: q次询问,问[l,r]子区间的mex值 思路: 对子区间[l,r],当l固定的时候,[l,r]的mex值对r单调不减 对询问按照l离线,对当前的l,都有维护一个线段树,每个叶节点保存[l,r]的mex l每增大1,都要更新[l, next[l]-1],将这个区间内大于a[l]的值更新为a[l 阅读全文
posted @ 2019-07-07 23:16 wrjlinkkkkkk 阅读(252) 评论(0) 推荐(0)
摘要:题意: 300个坑,每个坑能从别的坑引水,或者自己出水,i从j饮水有个代价,每个坑自己饮水也有代价,问让所有坑都有谁的最少代价 思路: 先建一个n的完全图,然后建一个超级汇点,对每个点连w[i],跑mst,这样就能保证所有坑联通,并且至少有一个坑有水 代码: 阅读全文
posted @ 2019-07-05 20:10 wrjlinkkkkkk 阅读(215) 评论(0) 推荐(0)
摘要:题意: 左端点在[a,b],右端点在[c,d],求这个线段里中位数(上取整)最大值 思路: 对数组离散化,对每一个值建中位数的可持久化线段树(有重复也没事),就是对于root[i],大于等于i的值为1,小于的为-1, 从小到大插入可持久化线段树即可 如果中位数为m,那么从左端点到右端点[l,r]的序 阅读全文
posted @ 2019-06-10 14:12 wrjlinkkkkkk 阅读(278) 评论(0) 推荐(0)
摘要:题意: n<=1e5的图里,在线连边、查询某连通块第k大 思路: 练习线段树合并的好题,因为依然记得上一次启发式合并trie的时候内存爆炸的恐怖,所以这次还是用了动态开点、回收 听说启发式合并splay更快QAQ,学会了试试 代码: 阅读全文
posted @ 2019-06-05 01:37 wrjlinkkkkkk 阅读(217) 评论(0) 推荐(0)
摘要:题意: 一个方格图里$a_{ij}$为这个格子里柱子的高度,一些有高度的柱子上有一个蜥蜴,每个蜥蜴可以跳到距自己曼哈顿距离<=D的高度不为零的柱子上,同时当前柱子高度减1,蜥蜴的最终目的是跳出格子,问最终有多少蜥蜴跳不出去。 思路: 最大流,源点为S,汇点为T 对每个有高度的柱子拆点id→pid,容 阅读全文
posted @ 2018-12-19 17:12 wrjlinkkkkkk 阅读(212) 评论(0) 推荐(0)