- 博客(6)
- 收藏
- 关注
原创 [2018雅礼3-27]subset 分类讨论+三维偏序+二维偏序
首先有个显然的结论,对于一个集合SSS,当ax,bx,cxax,bx,cxa_x,b_x,c_x均不为最大值时从SSS中删去xxx,那么|S|≤3|S|≤3|S|\le 3且一个SSS唯一对应一个答案。 我们先用O(nlog2n)O(nlog2n)O(n\log ^2n)的三维偏序预处理出对于每个xxx,有多少个yyy满足ax>ay,bx>by,cx>cyax>ay,b...
2018-03-28 22:02:47 317
原创 [BZOJ4919]大根堆 启发式合并+线段树/multiset
先考虑O(n2)O(n2)O(n^2)的DP,设fi,jfi,jf_{i,j}表示考虑子树iii中,选的vvv的最大值≤j≤j\le j时最多能选多少个点,那么考虑一个点的转移。 先合并儿子:fi,j=∑x∈sonifx,jfi,j=∑x∈sonifx,jf_{i,j}=\sum_{x\in son_i} f_{x,j} 在选上他自己:chkmax(fi,≥vi,fi,vi−1+1)chkma...
2018-03-28 21:42:50 467
原创 [2018雅礼3-25]arg dp套dp
考虑求LIS的算法,我们有一个数组didi表示上升子序列长度为ii时最后一项的最小值,然后每加入一个值xx,就替换掉dd中第一个≥x≥x的值。于是我们可以用一个三进制状态表示这个dp(00表示还未选,11表示选了且在dd中,22表示选了但不在dd中),转移即可。 复杂度O(3n∗nlogn)O(3n∗nlogn),实测把loewr_bound改成暴力扫的O(3n∗n2)O(3n∗n2)更快。。...
2018-03-28 21:25:52 284
原创 [BZOJ3600]没有人的算术 重量平衡树+线段树
先讲讲重量平衡树是什么,可以先看2013年国家集训队clj的论文。 重量平衡树首先要保证平衡而且不能是均摊平衡,然后要么没有旋转,要么旋转是影响的子树大小要期望loglog\log或者均摊loglog\log。Treap和替罪羊树都满足重量平衡树的条件。 那么对于这题,发现复杂度瓶颈在于比较两个数的大小(复杂度可能达到指数级),因为操作中出现的数的种类是O(n)O(n)O(n),我们希望能给每...
2018-03-14 21:13:21 459
原创 替罪羊树模板
替罪羊树要记一下几个东西:t:当前节点权值cvr:子树当前大小(包括删除的点)sz:子树中元素个数(不包括删除的点)ex:当前元素是否存在插入操作: 1. 插入一个数会导致一些其某些祖先满足要重构的条件,此时要取最浅的祖先直接重构。 2. insert要返回一个 tree ** 类型的东西,表示要重构的那个指针的地址。 3. 重构的时候(在travel)中要把已删除的点空间释...
2018-03-14 20:41:42 491
原创 Treap模板
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int rd(){ static int seed=23333; return (seed=(66666ll*seed+66666ll)&2147483647);}int n;str...
2018-03-07 11:04:27 225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人