随笔分类 -  BZOJ题解

摘要:[BZOJ4476] [JSOI2015] 送礼物 (01分数规划+ST表) 题面 给出n,k,l,r和序列a,要求从a中选一段连续的区间[i,j]出来,使得M(i,j) m(i,j)/(j i+k)最大,且[i,j]长度在区间[l,r]内。 M(i,j)表示[i,j]中的最大值,m(i,j)表示[ 阅读全文
posted @ 2019-08-15 20:07 birchtree 阅读(195) 评论(0) 推荐(0)
摘要:[BZOJ 1767] [Ceoi2009] harbingers (斜率优化) 题面 给定一颗树,树中每个结点有一个邮递员,每个邮递员要沿着唯一的路径走向capital(1号结点),每到一个城市他可以有两种选择: 1.继续走到下个城市 2.让这个城市的邮递员替他出发 每个邮递员出发需要一个准备时间 阅读全文
posted @ 2019-08-15 19:52 birchtree 阅读(216) 评论(0) 推荐(0)
摘要:[BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明) 题面 T组询问,每次给出a,b,c,d,k,求$\sum _{i=a}^b\sum _{j=c}^d[gcd(i,j)=k]$ $T,a,b,c,d,k\le 5\times 10^4$ 分析 $O(n^ 阅读全文
posted @ 2019-08-14 22:11 birchtree 阅读(317) 评论(0) 推荐(0)
摘要:BZOJ1185[HNOI2007] 最小矩形覆盖 题面 给定一些点的坐标,要求求能够覆盖所有点的最小面积的矩形,输出所求矩形的面积和四个顶点的坐标 分析 首先可以先求凸包,因为覆盖了凸包上的顶点,凸包内的顶点也一定能被覆盖 结论:这个矩形的一条边一定与凸包的一条边重合。 然后对于凸包的每一条边$\ 阅读全文
posted @ 2019-08-14 20:54 birchtree 阅读(456) 评论(0) 推荐(0)
摘要:[BZOJ2829] 信用卡 (凸包) 题面 信用卡是一个矩形,唯四个角做了圆滑处理,使他们都是与矩形两边相切的1/4园,如下图所示,现在平面上有一些规格相同的信用卡,试求其凸包的周长。注意凸包未必是多边形,因为他有可能包含若干段圆弧。 分析 我们发现凸包的圆弧段可以缩成一个圆,然后将直线段向内平移 阅读全文
posted @ 2019-08-14 20:31 birchtree 阅读(276) 评论(0) 推荐(0)
摘要:[BZOJ 2199] [USACO11JAN] 大陆议会The Continental Cowngress(2 SAT) 题面 题面较长,略 分析 考虑把问题转化成一个依赖性问题 我们把每只奶牛投出的两票中至少有一票和最终结果相符合转化:一只奶牛刚好投两次票,所以只要不满足奶牛的其中一次投票,就要 阅读全文
posted @ 2019-08-09 21:44 birchtree 阅读(189) 评论(0) 推荐(0)
摘要:[BZOJ 3731] Gty的超级妹子树 (树分块) 题面 给出一棵树(或森林),每个点都有一个值。现在有四种操作 1.查询x子树里 y的值有多少个 2.把点x的值改成y 3.添加一个新节点,它的父亲是x,值是y 4.断开节点x与父亲节点的边,一棵树变成两棵树 分析 新姿势 树分块get 分块预处 阅读全文
posted @ 2019-08-08 20:19 birchtree 阅读(316) 评论(0) 推荐(1)
摘要:[AHOI2013]作业 (莫队+分块) 题面 给定了一个长度为n的数列和若干个询问,每个询问是关于数列的区间[l,r],首先你要统计该区间内大于等于a,小于等于b的数的个数,其次是所有大于等于a,小于等于b的,且在该区间中出现过的数值的个数。 分析 为简化时间复杂度分析,假设n,m在同一个数量级 阅读全文
posted @ 2019-08-08 09:18 birchtree 阅读(294) 评论(0) 推荐(1)
摘要:[BZOJ 3173] [TJOI 2013] 最长上升子序列(fhq treap) 题面 给定一个序列,初始为空。现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置。每插入一个数字,我们都想知道此时最长上升子序列长度是多少? 分析 这题有几个重要性质: 第一个性质是, 插入的数 阅读全文
posted @ 2019-08-07 12:56 birchtree 阅读(231) 评论(0) 推荐(0)
摘要:[BZOJ 1483] [HNOI2009] 梦幻布丁 (线段树合并) 题面 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. $n,m\leq 1 \times 10^5$,颜色编号 $ 阅读全文
posted @ 2019-08-07 12:21 birchtree 阅读(251) 评论(0) 推荐(0)
摘要:[BZOJ4358]Permu(回滚莫队) 题面 给出一个长度为n的排列P(P1,P2,...Pn),以及m个询问。每次询问某个区间[l,r]中,最长的值域连续段长度。 分析 最简单的方法显然是用线段树维护最长值域连续段长度,复杂度$O(n\sqrt n \log n)$,会TLE 我们以值为下标维 阅读全文
posted @ 2019-08-06 17:23 birchtree 阅读(934) 评论(0) 推荐(2)
摘要:[HNOI2016]树(可持久化线段树+树上倍增) 题面 给出一棵n个点的模板树和大树,根为1,初始的时候大树和模板树相同。接下来操作m次,每次从模板树里取出一棵子树,把它作为新树里节点y的儿子。操作完之后有q个询问,询问新树上两点之间的距离 $n,m,q \leq 1 \times 10^5$ 分 阅读全文
posted @ 2019-08-05 20:55 birchtree 阅读(331) 评论(0) 推荐(0)
摘要:[BZOJ 3295] [luogu 3157] [CQOI2011] 动态逆序对 (树状数组套权值线段树) 题面 给出一个长度为n的排列,每次操作删除一个数,求每次操作前排列逆序对的个数 分析 每次都对整个序列求逆序对显然不行,考虑每次删除对逆序对个数的影响 假如删除的数为x,x在序列中的位置为p 阅读全文
posted @ 2019-08-02 12:30 birchtree 阅读(175) 评论(0) 推荐(0)
摘要:[BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树) 题面 原题面有点歧义,不过从样例可以看出来真正的意思 有n个位置,每个位置可以看做一个集合。 1 a b c :在a b的每个集合中插入一个数c 2 a b c :2:询问将a b的每个集合合并 阅读全文
posted @ 2019-08-02 12:11 birchtree 阅读(179) 评论(0) 推荐(0)
摘要:[BZOJ1074] [luogu 4036] [JSOI 2008] 火星人 (二分答案+哈希+fhq treap) 题面 给出一个长度为n的字符串,m个操作,字符串仅包含小写英文字母 操作1:在k位置后插入字符v: 操作2:将k位置的字符修改为字符v 操作3:查询从该字符串中第 x个字符开始的字 阅读全文
posted @ 2019-08-02 11:54 birchtree 阅读(179) 评论(0) 推荐(1)
摘要:[BZOJ3626] [LNOI2014]LCA(树链剖分) 题面 给出一棵N个点的树,要求支持Q次询问,每次询问一个点z与编号为区间[l,r]内的点分别求最近公共祖先得到的最近公共祖先深度和。N, Q≤50000 分析 对于一个点i,我们把i到根节点的路径全部标记+1,然后从z往上找,第一个碰到的 阅读全文
posted @ 2019-07-23 21:41 birchtree 阅读(312) 评论(0) 推荐(0)
摘要:[BZOJ3307] 雨天的尾巴(树上差分+线段树合并) 题面 给出一棵N个点的树,M次操作在链上加上某一种类别的物品,完成所有操作后,要求询问每个点上最多物品的类型。 N, M≤100000 分析 考虑树上差分。对于每条链(x,y),我们在x,y打一个+标记,lca(x,y)和lca(x,y)的父 阅读全文
posted @ 2019-07-23 21:23 birchtree 阅读(308) 评论(0) 推荐(0)
摘要:[BZOJ 3307]Cow Politics (LCA) 题面 给出一棵N个点的树,树上每个节点都有颜色。对于每种颜色,求该颜色距离最远的两个点之间的距离。N≤200000 分析 显然对于每种颜色建立一棵虚树是可行的。但是有编码复杂度更低的方法。显然某种颜色距离最远的两个点中,一个肯定是这种颜色的 阅读全文
posted @ 2019-07-23 21:14 birchtree 阅读(215) 评论(0) 推荐(1)
摘要:[BZOJ 4771]七彩树(可持久化线段树+树上差分) 题面 给定一棵n个点的有根树,编号依次为1到n,其中1号点是根节点。每个节点都被染上了某一种颜色,其中第i个节点的颜色为c[i]。如果c[i]=c[j],那么我们认为点i和点j拥有相同的颜色。定义depth[i]为i节点与根节点的距离。为了方 阅读全文
posted @ 2019-07-14 21:25 birchtree 阅读(404) 评论(1) 推荐(0)
摘要:题面 单点修改,区间求第k大 分析 首先,这道题卡权值线段树套treap的做法,所以只能用主席树做 对于静态的查询,root[i]对应的主席树的区间[l,r]保存的是a[1]~a[i]有多少个值落在区间[l,r]内。如果我们要修改a[i],则要修改O(n)棵主席树。那么我们像树状数组那样维护n棵主席 阅读全文
posted @ 2019-05-12 11:54 birchtree 阅读(256) 评论(3) 推荐(1)