从联赛活了下来(虽然分数倒一……),接下来要去CDQZ集训啦……
DAY -2 2017-12-16
被老师安排负责一部分同学的住宿以及安排……
抓紧时间继续学习,LCT真好玩啊真好玩……
晚上放假了……
DAY -1 2017-12-17
放假进行中……下午转场到了石家庄。
与srs,wzz,wxh几个dalao住在一个宾馆,晚上出去吃饭……
DAY 0 2017-12-18
4:30早起……到机场。
似乎没有想象中的麻烦……
很顺利的登机,起飞的时候气压的确有一些奇怪的问题……耳朵有点难受
飞机上颓三体2,颓完了……降落的时候好了很多。
到机场把人攒齐坐车出发,到了cdqz南门……
等了一会接应的老师过来了,带我们进了校园。
高新的校园很幽静啊……绿化很多也很好……宿舍环境也很好,食堂也很不错
比衡中不知道高到哪里去了。
中午好好睡了一觉下午去机房打题,快4点被七中的老师拉出去体育锻炼……
???一年没有锻炼过了,一脸懵X
4点多回到了机房继续打题中……
DAY 1 2017-12-19
上午考试
怎么说呢,全程懵B
觉得T3比较可做,考试的时候打的比较多
前两道题也在想但是想不动
最后T3用线段树模拟LCT拿了70pts,但是当时就是没看出来LCT的本质
T1T2都在乱搞,一共才30pts
总分100 rank8
讲题!
T1 乱搞 矩阵乘 DP ryf dalaoA掉了
T2 BSGS 邻座的女神犇starriaA掉了
比较妙……n%p和2n%p-1是钦定的,我们可以这样拼一个n%p出来。。。
T3 。。。待会学长要讲
讲课!
先是LCT
复杂度证明:关于access
首先splay是均摊O(logn)的
然后呢?
在access交替splay以及连边的过程中……
1 inline void splay(node *o)
2 {
3 for(clear(o);!o->isroot;rotate(o))
4 if(!o->f->isroot)rotate(son(o)==son(o->f)?o->f:o);
5 }
6 inline void access(node *o)
7 {
8 for(node *p=null;o!=null;p=o,o=o->f)
9 splay(o),o->ch[1]->isroot=1,p->isroot=0,o->ch[1]=p,o->update();
10 }
如果进行树剖,那么轻边最多有logn个,所以这部分是logn……
如果我们把树剖的重边改为虚边,可能是他兄弟的实边被改成了实边(因为一个节点,即他的父亲只有一条重边),也可能是access了他的父亲,
然后这个就和轻边差不多?
至于splay。。。。每次操作,splay的大小会不断抵消
最后是logn的
然后关于复杂度:
替罪羊最坏Ologn
treap期望Ologn
splay均摊Ologn
讲算导上面那个复杂度分析?听听听
“势能函数的特点是在实际代价较小的时候有较小的增长,较大的时候有较大的减少”?
然后加加减减就把复杂度干下去了。
bzoj2321
从简单情况开始看……假设是1维
相对位置不变
然后把权值(r-l)拆成r和-l
发现权值是一定的
然后把初态和末态看做势能的2个状态
物理知识……
做功,势能……
系统的势能……
lct如何查询子树信息
这次虚子树有用了
我们维护他们的信息去更新
在虚实切换的时候,进行集合的更新
最后选取自己想要的信息。
bzoj4530
lct维护子树大小(裸的?)
离线树剖也可?
lct维护边权
拆点……这个我会倒是
然后参照动态仙人掌不用建新点
维护子树的诱导子图
但是每个点多维护2个变量,表示在原树链上的前一条和后一条边
而access时候:
然后细节:注意pushdown
bzoj3510
维护重心……
性质?的确有。n/2子树大小开始搞
启发式合并合并lct
bzoj3637 COT VI
黑白树支持修改
求同色联通块大小
与度数无关算法:
2个森林:黑森林,白森林
维护的关键是森林的交接
白->黑 黑->白分开维护
尽量利用已有的父子关系,少连边。
uoj207 随机化套路?
法1 (维护子树)给点随机一个点权,判断子树点权和是否等于总和
法2 (维护边权)给点对随机一个权值,把权值异或到路径上面,修改的时候在切口那里异或那条边的边权。
bzoj3779 上午T3
当时用线段树模拟lct
我也是可以了23333
刚刚学了lct却没有用上
上午在想暴力往上跳怎么办
lct的链不就行了
那个操作明明就是给access带了个帽子23333
法1 分两段维护 x到根,子树到x
第一个好维护 第二个要维护子树
维护一个”走到最左边的点的权和“(也就是最靠上的点)
根据flip的对称性再维护一个去右子树的权和
维护splay大小,颜色,段数,………或者是我那种维护方法,用线段树打标记加减但是怎么加减?
bzoj3159 决战
用深度splay绑定另外一棵权值splay一起实现(不过不是权值关键字,是深度splay中序遍历每个点的映射……或者什么的)
用权值splay实现路径权值翻转。。厉害了
bzoj4764
维护环套树 分类讨论打标记
维护仙人掌 不讲
维护完全动态普通无向图 我……&*…#%……
把原图分成logn个维护?
没听懂???
?????
感性理解ing……
大概……有一种分治的思想?
ETT
用splay维护树的欧拉序
入正出负
然后用区间掰开的平衡树维护就行了?
无旋treap也行吧?
可以修改子树
link和cut都行
换根呢?序列shift一下(循环移位)?
好像不可打?
bzoj4825 单旋
维护二叉搜索树的ett
搞前驱、后继?
bzoj3786
维护欧拉序,切来切去打标记,正加负减
然后查询1~l[i]的权值和
FWT
求异或卷积??????
Ck=sigma(Ai*Bj)
普通卷积是i+j==k
然后这东西是i(位运算)j==k
先考虑:
Bj=sigma(Ai),i(位运算)j==j
对于长度为2^K的数组A 求B数组
先分治求子问题
然后你会发现现在 原来在子数组的某个数在不在新数组里面,只与最高位有关。
这个东西也是可以逆变换的
然后有一些奇怪的性质
i(位运算)k==k,j(位运算)k==k,那么(i(位运算)j)位运算)k==k
但是这个辣鸡东西不适用于异或
...好难啊好难啊
晚上继续改题 改不动了23333 调不出来
DAY 2 2017-12-20
上午考试
先是读题……发现T2的画风又不太正常
然后T1的暴力显然是n^2的,继续想正解……
本来是想扫描线直接打的,但是发现打不出来
最后写了个O(实际交点个数)的鬼B算法
不过想着想着就发现可以二分
然后打呗……虽然是最后1个小时想出来的
然后T2,觉得没准会按位贪心,然后没准是01trie什么的
鬼知道他是线性基啊
然后T3打了显然的40pts虚树
当时也在想转化问题,但是我在想的是“一个点作为lca的需要减去的贡献”
然后启发式合并vector什么的23333333
正解当然正常了许多,启发式合并线段树。
100+30+40=170 rank8
继续讲昨天的内容……
fwt是一种线性的变换
然后它就……可以直接加?
T(a)+T(B)=T(A+B)
以及可以直接取模
带修改,根号权值的复杂度
……持续懵B
Uoj310
给一个数集,求异或和相等的无交集子集的方案数
先考虑DP……DP还好……
然后FWT优化DP?
数据结构
线段树分治
在定义向量加法之后,01背包=向量求和?
把一个数组看成一个整体,然后瞎jb定义运算据说可以降低思维难度
关于消失之物
考虑分治
大概对于一堆东西
x ooooo
o x oooo
oo x ooo
ooo x oo
oooo x o
ooooo x
我们可以对x两侧的东西去分治然后合并?
可以?
……好像是可以
i对于[1.i)和(i,n]进行了贡献
这即是i的存在时间
线段树维护时间轴,即线段树的节点上维护存在于这个时间上的物品
大概是用在一些不可减的问题?
离线的……恩……动态的很多东西
动态连通性,二分图判断,最小生成树,线性基,凸包,背包
类似那个建设道路,维护时间轴
把每个东西看成事件……
…………没听太懂啊……不知道怎么打
bzoj4311
维护向量集合,查询给定与x点积最大的向量的点积值。
数据范围1e6
4644
1018
↓
↓
↓
猫树
用于维护无修改,维护不可减,不可重,合并较慢的信息?
比如区间最大连续和,O(1)
这个东西不可减对吧,rmq也不可重对吧
主体是个线段树,维护“从中点开始的前缀和和后缀和”
信息量nlogn级别
然后找到第一个处于询问区间的中点,直接加上之前的信息。
这样只合并了一次。
我们可以对线段树维护lca然后O(1)找到对应点
但是它维护的信息比较多
所以只能在端点修改
然后不能可持久化
那么我们把思想转移到平衡树上
在平衡树的节点上维护
不能旋转2333
↓
↓
↓
重量平衡树
在修改的时候 重建/旋转影响到的子树大小是log的
包括替罪羊和treap
treap是期望logn的
所以重量平衡树是可以作为外套的,重建复杂度有保障
支持动态顺序位置问题?
支持插入删除,查询那个元素更靠前
给节点用实数编号O(1)查询
插入和删除也可以魔改
↓
↓
↓
可持久化treap
可算讲这个了
高兴
不过忘板子了尴尬
无旋treap和可并堆的确长一个德行
↓
↓
↓
平衡树维护动态凸包
离线的可以线段树分治
在线是平衡树套平衡树
无旋Treap套可持久化Treap
可持久化维护了子树里面的一个大凸壳,
都是log^2n的
NOI2017影分身
用猫树思想维护
……我可能一直学了假的数据结构
↓
↓
↓
动态点分治
真的是数据结构大杂烩啊
毒瘤的一下午
树剖求LCA深度和 和LNOI那个差不多
然后讲了之前做过的几道题
bzoj4372
单点查询点权
把距离x不超过d的点权都加上w
唔……
点分树的dfs序然后用线段树维护他?被ban掉2333
每一个点维护一个线段树:距x距离为d的点被加了多少权值,支持区间加
然后也要维护父亲,爬上去查询
维护父亲真是好常见啊
↓
↓
↓
树剖优化Dp(基于链的Dp)
带修改树上最大权独立集
链:用线段树维护
每个节点4个变量,记录线段的左右端点有没有被选入独立集
然后合并
如果到了树上
树剖开始搞
维护2个信息a和b。
在思考的时候先考虑序列的简化版
bzoj4911
询问多少连通子图的点权异或和为k
用fwt优化
我¥&……#&%%……@@#
对于题目中的某些式子,考虑变换的思想
也就是吃进去什么吐出来什么
直接调用目标变量,写成F(i)=F(i+1)+常数的形式
剖分的结构假装他很优秀
让这个东西轻边有保障,我们仔细设计一下
然后
↓
↓
↓
LCT优化Dp
我……………………
↓
↓
↓
回到刚才那个SB题目
…………
猜结论
点双缩点建树?
naive
↓
↓
↓
圆方树
uoj30 tourist
↓
↓
↓
再回到刚才那个SB题目
…………
圆方树+树剖优化Dp
今天晚上搞什么?
还是FWT 线性基……
昨天那个LCT(3779)我弃疗吧
好的,一个晚上过去了
刚刚把fwt搞明白
很不错的思想……化简问题只考虑最高位,以及那个修改的分块思想。
DAY 3 2017-12-21
先讲课,成绩锅了2333
继续昨天的内容,先是讲了一些黑科技
O(n)的rmq
后缀自动机
ret集合?
parent树?
我怎么听不懂啊……
成绩出来了
95+10+80 rank4
T1其实是sb题然而……
非要玩个杂技用dfs枚举约数mdzz
T2
矩阵行列式
……
T3
LCT/树剖+回文自动机
…………
用LCT维护fail树
懒死我了没打lct
回文自动机
还是这东西亲切感人
可持久化AC自动机
维护一个“jump”,表示……什么玩意来着
用主席树维护可持久化数组。
字符串讲完了?
晚上再看看…………
可并堆
不难的东西但是很妙
询问“满足li<=pi<=ri的排列中,逆序对奇数多还是偶数多”,n 1e5
对高斯消元(虽然我还不会)的过程用可并堆维护用谁消元
给一棵有根带边权树,修改边权,使叶子与根距离相等,并且sigma(abs(delta val(i)))最小
定义f[i][j] g[i][j]
然后这俩都下凸
用可并堆维护凸壳?
bzoj1367
数据结构选讲
bzoj3956
bzoj3658
method 4 根据题意定制数据结构
晚上学什么啊……看一看看一看
DAY 4 2017-12-22
终于翻车了
前两天rank有点高 我下来冷静一下
50+100+20 rank……10?
T1……其实应该及时转换思路
转变枚举对象其实就能想了
原来我是枚举每个人去找谁更新它,现在我枚举它更新谁
然后拿个平衡树打个标记
T2之前似乎模拟赛考过
T3……
……………………
拒绝,我拒绝
我们还是讲课
bzoj4771
x的子树里和x不超过d的点有多少种颜色
对于“每个深度”建一个主席树
然后维护深度和
对于点x 在deep[x]+d对应的主席树查dfs字数和
用set维护虚树预处理
bzoj2658
n*m矩形有N个黑点
有多少矩形至少有1个黑点
n,m 4e4 N 100000
肯定统计没有黑点的
然后呢?
枚举下边界
设对于某个下边界
对于x坐标的每一位xi
经过距离hi达到某一个黑点
然后hi排成了一排
wc2016鏖战表达式
k种运算 都满足交换律结合律
然后支持区间翻转 单点修改 表达式求值 可持久化?
无旋Treap套无旋Treap套无旋Treap套无旋Treap套无旋Treap套无旋Treap套无旋Treap套无旋Treap套无旋Treap………………
杂题选讲
所以说这种性质题/结论题啊……
bzoj3425
bzoj3917
果然可以分治
但是好神啊
bzoj3351
大块小块算法的应用?
树分块
设块大小是s
选取深度是s倍数,子树大小为s的点作为关键点
然后每个点往上走第一个点的这个点所处块
bzoj4849
数据范围小一点是可以费用流的
然后结合具体题目去优化
必须要动脑子思考啊……
bzoj3509
分块fft?????
与jcy告别 明天开始讲图论?
DAY 5 2017-12-23&DAY 6 2017-12-24
昨天(DAY 5)晚上电脑蓝屏了……
什么东西都没存 笔记也没有 心里苦啊
DAY 5 没有存数据2333
DAY 6 100+20+25 并列了不知道多少个人的rank22
昨天晚上电脑蓝屏了……
什么东西都没存心里苦啊
讲题
T2是什么鬼题啊
忘了四边形不等式怎么打
想死只好打20pt
未知算法G
从左往右找到第一个k使得[k-1]<[k+1]
合并[k-1],[k]
再往前找到第一个[j]>[k-1]+[k]的j,把[k-1]+[k]插到j右边
T3
改装最小割,反边流量要inf?
没听懂
没听懂
还是讲课吧
网络流
二元费用问题?
经典的最小割模型
给这些边分别搞好流量
最大密度子图
选择一个边导出子图使得边数/点数最大
最小链覆盖覆盖所有点
每个点恰好被一个链覆盖
资瓷可重呢?
dillworth定理?
最小链覆盖等于最长反链
线性规划转网络流
诶我一直不会啊
bzoj1061
bzoj4842
唔……让我思考一下
听dalao讲
把等式差分一下
移项
xxxxxxxxxx -?+?=0
等于0:流量守恒
变量对应流量,因此负的为出边,正的为入边
和上下界类似
然后差额流量用辅助变量之间从源点/汇点补流量
关键字消变量
如果把网络流藏了起来,关键的是看原图中的什么与网络流中的要素去对应
比如说入度出度流量费用等等
但是有的时候线性规划用不了
边的实际意义
一类核糖体+mRNA问题233333
终于对这种“每个长度为l的区间至少k个/不超过k个”的题目理解一点了
我们的核糖体,也就是那个长度为l的区间,在不断的移动
一开始我们从源点放出来k个tRNA,现在如果它在这个区间内操作了一下,
那么在这个区间里面它就不能在操作了,那么我们让他跳到m长度之后,也就是不包含它的第一个区间
当然也有可能从底下有溜过去的其他tRNA,我们在底下连边来限制上界。
棋盘:经典套路是黑白染色瞎jb搞?
对于某些比较恶心的条件,考虑它到底有没有什么卯月,可不可以忽略
今天晚上把后缀自动机暂结了
其实没有想象的难
求拓扑序的那个基排挺不错,巧妙
bzoj2555SAM+LCT
bzoj2946经典应用
bzoj3926对Trie树建立广义SAM
bzoj3238稍微变形
bzoj3998稍微变形
cdqz的同学们晚上去参加了本校的圣诞晚会?羡慕
DAY 7 2017-12-25
数 数 数 数学
FFT 第三次搞这个了……
只能搞卷积?
然后化成卷积就行了
多项式的表示方法:
系数,点值
点值乘起来快……
单位负数根
满足w^n=1的复数解
wn=e^(2πi/n)
折半引例 消去引例
NTT 单位复数根换成原根
带有通配符的字符串匹配
令‘?'=0,a~z=1~26
那么两个字母匹配有
xy(x-y)^2=0
?????
???
然后把这个拆开做卷积
CDQ+fft?
淀粉质+fft?
鬼畜啊……
多项式求逆 多项式除法 开根 inf(x) 任意模数
k次幂
今天要学学板子
fwt
似乎并不全是套路
似乎有一种套路需要进行二进制位(bit(i))的限制?
生成函数
给定了一个无穷的序列a
然后有f(x)=sigma(a(i)*(x^i))
对于fibo的f(x)???
似乎可以解决计数问题?
把方案写到生成函数里去
反演
积性函数
狄利克雷卷积
phi卷1=i
mu卷i=phi
杜教筛:低于线性的复杂度求积性函数前缀和
改变枚举顺序
利用狄利克雷卷积来搞
杜教筛的步骤:
瞎搞?
似乎
我们一般是要求一个F(i)为f(i)的前缀和
然后数据范围还很大
我们把找两个积性函数g(i),h(i),g(i)卷f(i)=h(i)并且g和h要很好(一般是O(1))求前缀和
就是对于不能直接杜教筛的式子,
可以将其与另一个前缀和易求的积性函数狄利克雷卷积,
使得卷积后的函数前缀和也易求。
然后设H(i)为h(i)的前缀和,我们就有g(1)F(n)=H(n)-sigma(i=2 -> n)(xxxxxxxxx)
其实这大概也是一种化小问题规模的思想
我们搞这么多式子 就是为了让F同时在两边出现
这样就可以化为子问题了
群论
burnside
polya
???
??
???????
????
全都蒙过去了
GG
线性基
两个板子之间不知道有什么区别
我弃疗吧
搞了一晚上杜教筛
数学有益身心健康
DAY 8 2017-12-26
翻车翻车
T1 全世界都会推柿子我不会 昨天晚上白搞一晚上杜教筛
T2写个动态淀粉质爽一爽
没开全longlong挂60
T3网络流莫名其妙TLE可能我板子打挂了
25+40+35 rank26 鬼畜啊
然后讲课 博弈论
博 博 博弈论?
打表是博弈论的有力工具
推结论是一种能力和技术
圆的反演定理
对于任意点p,其反演点q有op*oq=r^2
DAY 9 2017-12-27
越到后面考的越差
我好菜啊.jpg
10+70+0
T1据说暴力能A 然而我不敢打
再加上捆绑就gg了
T2正解打炸了?挂了30pts
昨天T2也炸了60pts
T3 网络流好神啊
虽然我不会求导但是我可以三分啊……
不过我不会打三分的板子
反思一下……
这两天有点浮躁……开始挂分了,并且挂的不少
前几天的成绩让自己飘了
是小夫你飘了还是胖虎我拿不动刀了
比如昨天那个T2 如果我再查一遍也许我就会发现那个少开的LL
要踏实专注啊……
讲课
先是一堆树归
性质题怎么推啊怎么推
补集转化的运用
奇妙的状压
最小表示法
这道hdu4285似乎很不错啊……
有时间做一做
今天晚上搞fft吧
我鸽了不知道多长时间了 快搞一搞
好的一晚上又是过去了
把FFT总算是搞懂了……包括原理,以及代码实现的细节,还有一开始的rev操作。
真的是很优秀的算法……打了一道板子题,明天去做一下NTT……
DAY 10 2017-12-28
还是讲课的dalao出题
T1……无脑的打了个树套树 MLE了
亏我打得出来线段树套启发式合并可持久化Treap
T2数组开小了 挂了30pts
T3……没脸说了
交之前开了个大数组 搞MLE了
嘴上说着踏实专注但是还是挂了3天的分啊
60+30+60
这样的话,不能说自己能满意吧?
刚才看到WQ的游记写着这样的话
(中午,因为今天有点爆炸就思考了一下人生,悟透了OI路,感觉神清气爽(不得不说,联赛之后我变了,变得越来越功利,越来越颓废,好像忘了真正的OI是什么)
嗯……怎么说呢
联赛之后 自己的确有一定改变 包括套路,思路的广度,还有自己最不行的推柿子能力等等
刚开始集训的时候 的确也有小小的目标 有的时候还会幻想着自己能够AK之类的
但是现在我已经意识到
首先 瞎jb想是没有什么卯月的
第二 长期的训练是会让人陷入枯燥的心态坑的
所以必须要想办法让自己放松下来,一定要保持良好的状态,放松可以但是千万不要颓废
这两天想想都有什么办法好了
DP优化
改良状态定义 改良枚举方式/状态数
鹰蛋问题
三分进行优化
观察规律 特判
看数据下菜碟
单调队列优化
优化多重背包
对于每一个物品都跑一次
四边形不等式
满足区间dp那样的转移方程
如果有:
w[i][jj]+w[ii][j]>=w[i][j]+w[ii][jj]
i<=ii<=j<=jj
上次那个不知名G算法
斜率优化
bzoj3672 购票
没有做……我回头做一下
DAY 11 2017-12-29
上午依然考试
感觉自己被套路了
今天这TM是3道杂题
T1拿CDQ打了个贪心的活
T2没有梦想的输出impossible
T3是人生第一道交互,结果并没有什么分数
T1的CDQ打到了10点
然后玩T3也没玩出来什么东西
GG 60+0+0 rank24
还有明天一天
希望分数能好看一点……
讲课
期望概率
带环dp:dfs解方程/高斯消元
概率可以舍弃处理次数较多的量(乘了太多
很可能是0)
如何表示连通性:状压 最小表示法 自然数拆分
打暴力是一种艺术
拟阵
空集可行 子集可行(遗传) 扩充特性
通信题
真好玩啊
这几道题的思路都很妙啊……
尤其这些都是编码题……很是考验思维的灵活性
真是优秀
明天最后一天了,加油咯
明天上午考试
考完试……似乎我考不完试
不过听老师说说
下午1:30讲题 2:00闭营仪式
DAY 12 2017-12-30
似乎今天上午我考不完试啊
最迟11:30左右就要离场收拾东西去了
心里苦
果然没有考完……
让RYF帮忙领奖
赶飞机啊赶飞机
飞回了家,感受温暖和美食
我抽到卡莲了啊哈哈哈
DAY 13 217-12-31
啊啊奶奶做的饭太好吃了
吃不动了吃不动了
下午回衡水,住在宾馆里。
明天早上就要回hz啦
END
本以为会很长的十二天的集训,竟然结束的这么快,自己也有一点惊讶
惊讶于自己的表现,惊讶于先辈们的经验,也惊讶于外校同侪的友善
这次集训,我必须承认自己确有成长
不敢想的东西敢想了,不敢打的东西敢打了,也学会了很多新东西。
同时,我也认识到自己确有不足,思路局限,有事过于死板和套路,思维、细节不够严谨,以及仍然有很多不会的知识点;
但万幸的是我还有时间,我还能够做出改变
虽然自己还是有很多知识点不会
虽然考场上碰到题还是想不出来
从今往后,前方必然更加明亮,未来正等待着我!