随笔分类 -  B-数据结构-分块

摘要:题意 给定一个随机排列$p$,$q$次操作 \((1)\):给定$k$,将序列重排列$k$次,一次重排列为:\(p'[p[i]]=p[i]\) \((2)\):给定$l,r$,求$\sum\limits_^r p[i]$ (\(n,q\le 10^5,k\le 10^9\)) 做法 对操作$2$差分 阅读全文
posted @ 2020-06-16 17:12 Grice 阅读(66) 评论(0) 推荐(0)
摘要:题意 给定$n$长度的序列${a}$,$q$次询问$(l,r,v)$,要求执行 if(l<r) for(int i=l;i<=r;++i) if(a[i]>v) swap(a[i],v); else { for(int i=l;i<=n;++i) if(a[i]>v) swap(a[i],v); f 阅读全文
posted @ 2020-06-02 22:18 Grice 阅读(125) 评论(0) 推荐(0)
摘要:题意 给定一棵树,点有黑/白颜色,每个点给定一个$w_i$,若某白点$i$子树超过了$w_i$个黑点,则白点会被标记。$m$次修改点颜色,每次回答有多少被标记的点 做法 对操作分块 对块内修改节点建虚树,则每次修改一个点,影响的是该点至根路径 将虚树上同一条边代表的原树上的节点一起处理 \(O(n\ 阅读全文
posted @ 2020-05-31 11:22 Grice 阅读(120) 评论(0) 推荐(0)
摘要:题意 codechef 做法一 首先考虑不含操作3$,4$,且如果每次操作都是对全局:\(A+=B\),那么加$x$次,\(B_i\times x+A_i\),这个可以维护一个凸包 再考虑进操作$3,4$,也只需要增加一点变量可以维护:使得斜率不变,把值加到截距上。而每个点加的值一样,凸包还是不变 阅读全文
posted @ 2020-05-08 17:13 Grice 阅读(133) 评论(0) 推荐(0)
摘要:题意 uoj 做法 离线从小到大考虑$w_i(u,v)$ 考虑该天被限制的边数$cnt_i$,若$dis(u,v)>cnt_i$,则$(u,v)$路径上的点可以连通,跑并查集即可 若$dis(u,v)<cnt_i$,则将该路径上的所有点取出来,将限制边连上 度数最小的点度数小于$\sqrt $,将该 阅读全文
posted @ 2020-05-07 15:42 Grice 阅读(120) 评论(0) 推荐(0)
摘要:题意 给定一个长为$n$的序列,每次查询区间中出现次数$k1$小的数里面的$k2$小的数,要求空间线性 做法 莫队,用$O(1)$修改,$O(\sqrt n)$查询次数$k1$小的,用关于次数的权值分块做 而每个点内再开个关于值的权值分块 这时我们发现被卡空间了,因为权值分块的空间是等于值域的 对于 阅读全文
posted @ 2020-02-03 00:50 Grice 阅读(119) 评论(0) 推荐(0)