随笔分类 -  分治--CDQ

摘要:题面 "传送门" Sol 设$f[i]$表示$i$到根的最小代价 $f[i]$可以由$f[j]$转移而来,要求$j$为$i$的父亲,并且满足距离限制 显然$DP$式可以斜率优化 然而这是在树上,并且每次都要一个$i$往上的若干个点的凸包 可以考虑维护区间凸包,可以用线段树 或者$CDQ$分治 $CD 阅读全文
posted @ 2018-05-31 11:50 Cyhlnj 阅读(165) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol 每个导弹有时间,高度,速度 求时间递增,高度,速度不降的最长的序列 然后还要求最长序列的方案以及每个导弹在最长序列中的方案 这个就是偏序问题辣,正反两遍求出每个导弹为结尾开头的序列最长长度 判断是否在最长序列就二者相加判断 然后记录下方案,用$double$,$long\ 阅读全文
posted @ 2018-04-04 15:31 Cyhlnj 阅读(147) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol 题目都说了 必然存在一种最优的买卖方案满足: 每次买进操作使用完所有的人民币; 每次卖出操作卖出所有的金券。 设$f[i]$表示第$i$天可以有的最大钱数 枚举$jb_iY_k+a_iX_k$$ 假设$k\frac{Y_j Y_k}{X_j X_k}$$ 设$K_i=\fr 阅读全文
posted @ 2018-04-04 14:16 Cyhlnj 阅读(225) 评论(0) 推荐(1)
摘要:题面 "传送门" Sol 处理出每个数$p[i]$最大能变成多少和最小能变成多少$mx[i], mn[i]$ 设$f[i]$表示到第$i$个位置的最长的满足要求的序列 $f[i]=max(f[j])+1$满足$mx[j]\le p[i]$且$p[j] \le mn[i]$ 然后这个东西类似三维偏序, 阅读全文
posted @ 2018-04-03 10:39 Cyhlnj 阅读(135) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol $CDQ$分治 先对$x$排序,对$y$在$CDQ$分治是从大到小排序 从大到小加入,右边用单调栈维护$x$递增,$y$递减的序列 左边就是找到$x$比它大,最小的$y$(树状数组解决) 再在右边找到最后一个小于这个$y$的位置,那么栈顶到这个位置都是答案 cpp incl 阅读全文
posted @ 2018-02-05 08:21 Cyhlnj 阅读(150) 评论(0) 推荐(0)
摘要:题目 "Cogs" ~~没有Bzoj的权限号~~ Sol 离线,$CDQ$分治,把询问拆成$4$个,变成每次求二维前缀和 那么只要一个修改操作(关键字为时间,$x$,$y$)都在这个询问前,就可以累计答案 那么就成了偏序问题了,直接$CDQ$ 注意当$x$相等时要把修改丢在前面 cpp includ 阅读全文
posted @ 2018-01-28 20:30 Cyhlnj 阅读(148) 评论(0) 推荐(0)
摘要:CDQ套CDQ或者CDQ套树套树 前者快于后者然而我写了后者 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <algorithm> # include <string.h> # define IL in 阅读全文
posted @ 2017-12-19 19:37 Cyhlnj 阅读(234) 评论(0) 推荐(0)
摘要:CDQ分治或树套树可以切掉 CDQ框架: 先分 计算左边对右边的贡献 再和 所以这个题可以一维排序,二维CDQ,三维树状数组统计 CDQ代码 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <algori 阅读全文
posted @ 2017-12-19 19:34 Cyhlnj 阅读(223) 评论(0) 推荐(0)
摘要:CDQ分治 把删除转变为逐个添加,于是就变成了三维偏序问题 时间,位置,大小 分两遍统计即可 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <algorithm> # include <string.h 阅读全文
posted @ 2017-12-19 19:28 Cyhlnj 阅读(235) 评论(2) 推荐(0)