退役了,NOI2020ag滚出。游记不太想写,随缘再补吧。之前写了一堆集训记录,准备退役之后挂出来,但能找到的好像只有联赛前后的了,还不全,唉,老年选手就是如此了。
联赛准备?
牛逼博主blog
9-2
后缀平衡树
9-4
sam好题
prufer序列复习
线段树好题
斜率优化
dp好题
贪心好题
数学
牛逼组合数
简单分块
01lis好题
9-5
交互好题
重心+构造
略神
神题:数论+字符串
数论+字符串好题
构造+数学,一个好用的trick
字符串:Ac自动机
期望好题
线段树+思维
9-6
费用流简单题
网络流好题:如何判断某一条边在最小割里&求字典序最小的最小割
费用流:优秀的建图
网络流常见套路
网络流小trick
2-sat+trie
竞赛图+计数dp+容斥套路好题
竞赛图tips有n元环就一定有3~n-1元环
随机化,,,
9-7
点分治+超级钢琴
最小割树
构造+数论;tips神秘定理
区间dp好题
9-8
状压dp好题
图论题
9-9
构造+调整法
数论+dp
二维滑动窗口:简单单调队列
闵可夫斯基和+树状数组维护区间不同的数的个数
概率问题
博弈
倍增+计算几何好题
闵可夫斯基和凸包学习
模板
9-10
数论+推式子
tips:尽量把下标相同的放到一边
dp
tips:计数的小套路,优化的小技巧
优秀技巧+dp
图论+结论:大胆猜结论
线段树
9-11
manacher+覆盖区间的小套路
计数+ntt
计数+图论好题
这个。。。
trie的区间加1
分块好题
构造
tips:第二次了,形如Cn2的构造
26个这样的数可以构造出1e5以内的数
找规律,,,
cdq+矩形加减
9-12
最小割+dp
tips:状态的设计+dp优化的技巧(方向转化)
分治ntt+环形计数好题(坑)
9-16
构造+贪心好题
图论+思维
tips:直接到终点+权值为路径最小值
结论+线段树
贪心+加油问题
二分+简单树形dp
tips:dfn序前k个是可以dp判断的
最小表示法模板题???这是cfdiv1的F题???
牛bi构造题
tips:填数的一种dp方式?
9-17
图论+小博弈
tips:从-1入手,妙妙妙
简单博弈
倒推+dp
tips:不一定要维护所有信息,适当取最值
tips:很棒的一道插板的题目,多复习
思维
tips:合理缩小问题规模的典范!!!超级好题!!!
树上合并+并查集
tips:这个树上合并的套路好像很好用
9-18
分治+并查集ortarjan
tips:猜结论好题
概率dp+fft
tips:dp啊,想不到系列
tips:平面图求距离的大套路结合一下线段树和分治
排列求逆序数+组合计数好题
tips:排列求逆序数的常用套路
9-19
状压dp
tips:状压都不会写了,,,
拆点+bfs最短路
tips:拆点这种经典技巧不能忘,贪心式bfs还挺好用
线段树好题,细节略多
tips:这种区间分块要求块内颜色不超出的题的一种想法
线段树+贪心+思维
tips:分析+贪心
最短路+分层图
tips:好久没做最短路,,,
1、最短路图是有向图!!!最短路是有向的!!!
2、分层图大法好,这个也算是最短路基本技巧了吧
高维前缀和+容斥
tips:我终于做到高维前缀和的题了!!!
9-20
线段树+扫描线+网络流
tips:
1、单log扫描线,可以用set维护可行线段
2、网络流的复杂度???
神仙题,场上那个人是怎么做出来的???
莫比乌斯反演+虚树or点分治
tips:计数dp状态的设计
1、考虑影响,当前的位置需要什么信息来确定
2、考虑转移,多考虑最后一步的决策。其实dp也许就是一种逐步减小问题规模的方式
【复习】
9-21
模拟
tips:老套路,情况很复杂的题,可以先暴力处理一段
192.168.102.138/JudgeOnline/problem.phpcid=1352&pid=0
计数dp
tips:还是状态的设计吧,我终于在场上做出计数dp了!?
tips:这个dp状态其实基本想到,但是莫名其妙的没有去推转移然后就神游去了
tips:,,,,细节巨多,巨难写
贪心+调和级数
tips:调和级数经典套路,只枚举质数是loglogn的,然后就没有然后了
9-22
tips:看到20的数据范围应该想到状压,,,然后考虑最优策略,然后转移,感觉其实还蛮自然
2-sat+前缀后缀优化建图
欢乐1A,好吧其实感觉2-sat忘的差不多了
tips&复习:选方案选dfn序小的那个,因为强连通分量缩点后,dfn序是天然的拓扑序
思维+二分图
tips:一种思路吧,可以从类似当前局面的合法往后推,逐步缩小问题规模
树形dp+边双联通
tips:注意边双联通和点双联通的选择
笛卡尔树+线段树/单调栈
tips:线段树做法十分神秘,类似对每个点统计贡献,然而这种做法常数大,复杂度垃圾
就是考虑shiftk步后1的子树的高度
9-23
tips:注意有序无序
点分治/dfn序+矩形数点
tips:线段树区间覆盖+撤销可以维护区间最值,及其数量来维护
dp+套路+卡常
tips:卡常时注意瓶颈处是否可以减少无用状态
不平等博弈?感觉就是贪心,然后分情况讨论一下
线段树每个左端点维护一下就好了
tips:体验极差,看错题了(把减法看成除法
不过还是能做的,大概就是先二分答案,然后考虑每个线段的贡献就是一个矩形,直接扫描线一下就好了
容斥+meetinmiddle
tips:好题,感觉这种算法不太熟练
数论
tips:老年选手推不出式子系列
9-24
tips:还是缩小问题规模
dp+思维
tips:从部分分入手,发现性质,转化问题,然后dp,还行吧
tips:两点之间只有一条路径->树
排列问题+网络流/最小割
tips:排列->图论,先考虑不修改,然后看什么修改有贡献,然后考虑代价,然后选择算法
9-25
数论+生成函数好题
tips:指数生成函数转普通生成函数,各种错位相减
另,题解都在说什么牛逼东西
kruskal重构树
tips:算是新知识点?类似的限制是可以到达的边权是一个前缀或者后缀的题,好像挺好用的
降智好严重啊,莫扎特的那个什么第二章是假的吧
计数+生成函数+ntt
tips:从条件入手,生成函数的定义其实可以很灵活的
fwt+子集卷积+DAG计数+容斥
tips:
1、DAG计数的套路(搞过好多次了)就是枚举出度为零的点
2、子集卷积,,,
复习:fwt
子集卷积都不会写了,,,,,
9-26
乱搞
tips:这种类似随机数的感觉,可以往随机化想
dp,只差一步转移
分治/三维数点
1、分开每种颜色算贡献
2、区间覆盖,区间不同颜色数,可以用set+分治/树套树做到nlog^2n
tips:感觉自己不知道在干啥,我居然在缩点+dp
dfs+gcd小套路
tips:感觉gcd的套路蛮多,算是一种积累?
就是如果一个序列每一个数都是前一个数的约数,那么序列长度是log级别的
图论+度数套路
tips:感觉这个度数的套路还挺常见?
9-28
bsgs+矩乘
tips:bsgs不止用在数论,矩阵乘法也可以
get套路:如何在modp意义下求递推数列中c出现的次数,可以做到p√p
线段树+维护一大堆乱七八糟的东西
tips:好神啊,但是感觉思路自然?主要还是觉得有点难写
牛逼交互
扫描线+数论
tips:无脑考虑枚举右端点然后维护每个左端点的答案,然后排列是可逆的,对于添加一个新排列v,若v已经能表示出来,那么答案不变,否则答案至少变为2倍,然后就没有然后了,暴力一下就好了
折半搜索+子集和
tips:用类似预处理一个子集和的方式,将3^n降到2^n*n
dp+决策单调性+wps二分
tips:dp状态的设计应当尽量简洁,这种选点要求所有点离所选的距离最小的题,可以考虑中位数
9-29
线段树+sort套路题
排列与行列式+左偏树维护消元
tips:排列的逆序数与行列式这个关系没想到,左偏树维护消元老套路了,大概就是如果1个1e5的01矩阵,知道其中有一些矩形是1可以做到nlogn消元
生成函数+mtt
tips:算是板子?关于fft预处理血的教训,longdouble是真的慢
考虑一部分贡献,然后进行处理,注意观察数据范围
数学+dp
tips:场上一直在正面推,然后乱优化,其实反着推,既简洁又好想
贪心+思维
tips:还是注意缩小问题规模,大胆猜性质
10-2
思维+堆
tips:倒着做还是比较自然的,然后我就t掉了,还是要多发现性质
魔改fwt
tips:感觉fwt的掌握还不是特别到位,get一个思路,这种解密一个类似点乘的式子,可以考虑fwt
就是将C=A×B,改写成C0=A0×B0,C1=A1×B1,然后分治下去,也算是缩小问题规模?
sam
tips:首先log^2n随便做,logn还不会先坑着,然后,由于这个题它每次找到一个长度l,之后会立刻往后跳这个长度l,所以就可以用sam直接线性做
容斥+离线+并查集
tips:真实n方过百万,正解就是首先容斥,然后发现修改很少,那就把不用修改的边直接建出来,对于要修改的边,每次修改的时候暴力看它能不能用
tips:写完之后还是要冷静一下,想想自己的做法是不是考虑完所有情况了
翻纸牌问题的经典套路+树套树
tips:treap巨慢无比,另外线段树套线段树是可以做到空间logn的,只需要对每个线段树节点离散化一下就好了
构造+二分图匹配+hall定理
tips:感觉自己快没了,hall定理还不记得
然后感觉还是挺好想的,首先操作1,3很明显是告诉你每一行之间很随意,但是列就不同,只能通过一次操作2来沟通不同的两行
所以从要求高的入手,建立二分图,然后就很自然了,每次取出n对匹配,然后钦定一行去安放这些匹配,然后就没有然后了
倍增+暴力
tips:手玩样例很容易发现答案是怎么取的,然后证明很直接,然后暴力判一判就好了
10-3
排列排序+思维
tips:取模操作巨慢无比,然后这种题好像被出烂了
数学+容斥
tips:流下了数学不好不会求体积的眼泪,,,首先,你要会算面积,大概就是考虑二维怎么做,然后大力猜想并扩展一下,然后容斥就很简单了
treap+倍增
tips:这种只在末尾插入的可持久信息,如果要求区间查询,可以加一个倍增转成后缀查询
然后这道题就是一步一步来,先静态怎么做,直接线段树+预处理,然后考虑可持久化插入,需要一个平衡树,但是直接做是logn^2的,然后就用上面那个tips就可以了
tips:这个e是真的简单
10-4
枚举/贪心
tips:贪心显然错,然后其实可以从easy做起,hard就简单优化一下就好了
贪心+均摊
tips:修改的位置基本想到,也大概会n^2,然后就gg了,正解其实也不难想,就是先把我的线段树去掉,然后考虑每次修改一个点所能影响的范围,然后就可以均摊直接做了
tips:sam模板题,感觉串串题有的也很能做啊
博弈+搜索
tips:博弈论好题,感觉看数据范围猜复杂度的水平还是没有,对环的处理很精彩
数学+扩展欧几里得
tips:复习扩欧,简单推一推就好了
搜索
tips:没啥好说的
复习:
sg函数
tips:感觉之前sg函数是乱学的,主要还是抓准什么是游戏,什么是后继
tips:线段树好题,结论还蛮好找
update:这里还有一个牛逼做法
图论+结论+大力讨论
tips:没啥好说,大力讨论吧
莫比乌斯反演
tips:简单套路推一波就好了
lct+线段树
tips:lctaccess的经典套路
tips:没事多想想phi,有时候phi比mu好用
多项式+快速幂+容斥
tips:简单容斥一下,然后写出生成函数快速幂一下就没了
10-5
tips:容易发现这玩意儿长度很短,然后压位搜一搜就没了
dp套dp+fft优化dp
tips:感觉fft也还行,这种中间用点值然后成功少一个log的套路感觉还行,点值下标不对怎么办?乘个单位复数根就好了
矩阵乘法+线段树
tips:这个模数很小然后观察变化规律,然后就可以大力维护矩阵了
高斯消元+kmp+概率好题
tips:看到概率,加上数据范围果断想高斯消元,然后就是找方程了
分数规划+费用流
线段树模板题
tips:感觉有点难写,不过应该还行
10-6
sam+容斥
tips:模板题,稍微计数一下就好了
update:
感觉自己纯属运气好碰对了,正常做法是反串建出后缀树,然后讨论一下lca的情况,
然后正着做也是可以的大概???虽然,我一度也不知道自己在写什么!!!
sg函数+线性基
tips:首先暴力sg很好想,然后发现他求sg的方式类似枚举子集,那么我们就可以用线性基来维护这个过程,然后还有注意一下边界,也就是出度为0的点,然后就没有然后了
思维+组合数
tips:标签是瞎写的,首先是一步经典容斥,问题转化为小于等于k,然后就开始欢乐组合数,然后就没了
树形依赖背包
tips:转化问题和拆点很精彩,然后就是套路后序遍历做树形依赖背包,一个好用的小技巧是:一颗树挖掉一条链之后的部分是可以用两段dfn序表示的!!!
10-7
trie+最短路
tips:技巧蛮多,首先建新图,边当作点,然后发现连边是m^2的,考虑优化。注意到边权是类似lca的东西,然后这玩意儿可以类似后缀数组的height求lcp那样优化一下,建个前后缀,然后就O(m)了。
多测不清空,爆零两行泪!!!
极限注意够不够,0x3f3f3f3f可能不够,2e9就比较稳
多项式+推式子+莫比乌斯反演
tips:下面的重要公式需牢记,还是很不错的题,但是居然还要写任意模数fft,走了走了
复习?
多项式求ln,多项式求逆
重要式子:ln(1+x)和ln(1-x)的泰勒展开
tarjan+虚树
tips:垃圾题目毁我青春,好吧还是自己太菜
深刻理解点双&虚树!?算是点双板子?
然后就是大力推式子,然后暴力枚举mu值不为0的数,然后我并不知道复杂度是啥
10-8
数论+拓扑序
tips:经典套路,一个数只能%log次,因为每次至少减半,然后就可以做了,统计贡献的时候用拓扑序,好像麻烦了?
笛卡尔树+树状数组
tips:数数题,在最小值处统计贡献,然后笛卡尔树上维护一下就好了,贡献是一个常数论+一个等差数列,细节略多,好像又做麻烦了?
思维+基环树
tips:模型的转化很巧妙,学习了一下,然后就是大力分类讨论,(好像做过一遍,还写了题解,然而还是不会做???
树形dp
tips:首先老套路转成二叉树,然后注意到题目要求长度固定的到根的路径权值为m的倍数,立刻想到同余,把余数相同的缩起来成功缩小问题规模,然后就可以树形dp了,感觉还挺好想??细节还是有一点的,就是当完全二叉树不满的时候,多余的不用考虑
tips:一种很聪明的做法,提供一种树形dp维护联通块大小的思路
10-9
结论+杜教筛
tips:结论真牛逼,其实还蛮好想,就是一个简单转化把莫名其妙的直线和线段对应一下
然后就是原题加强了,欢乐的推了推式子,(深刻理解phi)手动滑稽,然后套路杜教筛一波就没了
可持久化+线段树
tips:又是原题加强,,,大概就是一种套路,好像这种类似维护前后缀最值的题只能线段树+pushup的时候二分nlogn^2来做?
然后如果会原题的化,那这个破题就是瞎几把可持久化一下就好了,这个破玩意儿要可持久化一堆东西,四颗线段树了解yix
tips:联赛dp,然后就没了,好像要玄学卡常?(小声bb,隔壁nlogn都过了,我O(n)要卡常??
10-10
思维+最短路+图的直径
tips:差一点?考虑贡献的时候可以试着从整体考虑,就是考虑整体的贡献和形式
思维+数位dp+字符串
tips:规律还差一点点,然后就乱维护一下就好了
tips:很神仙的一个高维dp,逐步缩小问题规模,根据当前状态所需要的信息来缩小问题规模
dp+组合转化
tips:好神啊
1、乘积型贡献,可以通过组合意义转化为方案数
2、状态的设计技巧,考虑清楚转移需要的信息
优先队列+思维
tips:瞎搞了半天发现还是要用优先队列
10-11
prufer序列+dp
tips:这种题都出滥了
tips:wc某题的弱化版,很经典的一个题,一个很重要的公式:给定一棵树,是可以求出选出k条边,至少包含这些边的有标号的无根树的方案数,然后容斥一下就好了
prufer序列+多项式
tips:这就是上面那个wc的题了
1、还是那个重要公式吧,多复习吧
2、dp的一个思路,多想组合意义转化,组合数往往可以转化为方案数
3、深刻理解e的泰勒展开,多项式exp是真的牛逼
结论+最小割
tips:感觉结论还挺好想,就是先从单一组入手,然后将符合条件的那些组加进去,然后就是最小割求方案数了
!!注意最小割的方案如何输出
最小割方案输出
tips:重要,最小割如何判断边是一定在最小割上,还是可能在最小割上
做法:在残量网络上跑tarjan,根据scc判断,对与边(u,v)
1、scc[u]!=scc[v]->可能
2、scc[u]==scc[S]&&scc[v]==scc[T]->一定
bzoj1797
10-12
tips:读题要认真,别人写一个题,你写三个题
思维+期望dp
tips:还蛮好推,算一种思路的积累?然后最优化问题的时候,不一定直接从题目就开始,要敏锐的进行转化,转化的越简单越好
网络流+最大权闭合子图
tips:建图还是有点东西的,(我场上在干吗,心态崩了
二分+贪心
tips:感觉还挺好想,为什么比赛现场只有8人AC??
建图+最短路
tips:图论题做的有点少,其实不难,主要不被题面吓到就好,好好体会了一下
10-13
xmj稳了!
小学生数学题
莫比乌斯反演+推式子
tips:老套路,简单莫反一下就好了,这个公式还蛮常用,Mark一下
序列自动机+二维前缀和优化dp
tips:深刻理解序列自动机,想清楚正着dp,还是反着dp,仔细观察从哪里转移过来,前缀和优化不能忘
1、模型转化,把区间修改尽可能的变成单点修改
2、推了一些式子,可以当结论来记
结论+贪心
tips:反着考虑,观察规律,细心优化,m^2说不定是O(m)的
简单的分层dp
牛逼博弈
tips:还是蒙蒙的,巨坑待补
概率dp+高斯消元+优化
tips:高斯消元的复杂度是立方的,尽量把里面的数提出来,多思考什么时候会有环,能不能分层
线段树分治好题
关于极差的一个小dp
tips:差分优化dp,排序+差分好像还不错
10-14
简单贪心
线段树+欧拉定理
tips:复习一波欧拉定理,感受一下欧拉函数的套路,注意边界是否合法
组合数+矩阵快速幂
tips:看到组合数第一反应就应该是组合意义,然后就没了
思维+树状数组二分
tips:学习了一波树状数组上二分,感觉还行
10-15
二维数点模板
最小割+建图
tips:网格题可以二分图+染色
容斥+dp
tips:容斥这种手段不能忘,找不到突破口的时候可以想想容斥
通信题
tips:重新编码大法好
二分答案+贪心
tips:扩区间+缩区间,挺好的想法,保证不劣,逐步逼近
二分图+set优化建图
tips:考虑边是否有意义,是否能去掉一些重边重点
10-16
tips:好像可以O(n),就是考虑答案一定是一条最长链+若干回路,然后就没了
扫描线+set
tips:计算几何好题,思路很显然,然而,,,
1、叉积是要分象限的,还是用角度把,就是点乘除一个模长,注意要不要取acos
2、注意边界,感觉张角还是直接算吧,就是用点乘除模长
数论+分块
tips:注意复杂度,√n修改,O(1)查询get
倍增好题
tips:倍增也是一种重要手段
10-17
斜率优化+模型转化
tips:斜率优化的正确写法,注意叉积可能会爆ll,还是老老实实用斜率吧
搜索+思维
tips:区间扩展的题,注意分析复杂度
暴力???
tips:复杂度还不会证明,待补
10-18
bzoj3749
排序类+逆序对+概率
tips:还是每对数考虑贡献
codeforces1081G
lct+树状数组
tips:差点sb了,居然没想到用数据结构维护这个东西
tips:感觉没有智商了,大型降智现场tips
10-20
概率转化+容斥
tips:一波牛逼操作
1、方案数转概率,一个方向吧:
由于随机实数相等的概率为零,所以1-n的排列说不定可以对应n个[0,1)之间的随机实数,比如排列的贡献是相邻元素大小关系的时候
2、随机实数大于,对应前缀和,小于对应后缀和(bi属于[0,1))
阀值取根号+暴力
tips:暴力+暴力如何等于正解,看看瓶颈是啥,能不能设个阀值合起来
可撤销贪心
交互+二分
tips:日常做不出交互系列,算是套路,主要还是考虑怎么体现当前集合有边与选定点相连吧
10-21
长链剖分+dp
tips:长链剖分好啊,(重链剖分强行多一个log,比如说我
三维面积并+线段树/set
tips:搞一搞发现是一个类似给你一堆三维几何体,让你求面积并,这个直接从大到小枚举一维,然后用数据结构维护一下前驱后继就好了
暴力
tips:点数很少,层数很少直接nk暴力就好了
10-22
结论+计数
tips:结论比较牛逼,嗯,还是从简单出发,先考虑一个三角形的情况,发现一定合法,自然的想到内部的点对答案影响不大,考虑扩展到一般情况,先从点的凸包入手,发现凸包上的点的颜色一旦超过两段,也就是颜色交叉一定无解,那么考虑如果颜色可以被划分成两个集合是否有解,考虑将多边形剖分(见参考blog)发现一定有解,得出结论,然后分类讨论一下即可。
链表+标记
tips:首先n^2logn比较显然,就是行列分别维护从两维来维护这个矩形,每次取出一段在行/列取出一段区间打上标记再加入列/行的平衡树中即可,然后这个题其实是可以线性的,考虑用链表维护这个矩阵,发现每次暴力修改边界,然后对某个矩阵打上一个类似旋转标记的东西即可,但是怎么打标记呢,我们发现每次访问一个点(x,y)必须从它的四相邻的这几个方格搜过来,那我们考虑在修改矩形的最外围打上标记,每次从(x,y)转移到(tx,ty)的时候,根据(x,y)的标记算出(tx,ty)的标记,细节见代码,略巧妙
扫描线+线段树
tips:模板题
组合数学
tips:考虑清楚贡献的意义,尝试分开考虑每种贡献,还蛮巧,感觉不难想
贪心
tips:算一算样例就发现了,感觉蛮显然(然而我样例算错了,233
独立集+数学
tips:这个怎么说呢,感觉提供一种思路?尝试按奇偶性分析一波,然后就可以快乐染色,然后就没了?
贪心+转化+构造
tips:缩小问题规模的典范,首先尝试构造答案上限,发现不是很大,考虑构造,然后从叶子出发,逐步缩小问题规模+拆分、转化路径贡献,然后就没了
10-23
1、∑μ(n)^2是可以O(√n)求的
2、枚举abc<=m的三元组个数可以通过规定a<=b<=c的方式做到O(m^(2/3))
欧几里得算法+斐波那契数列+矩阵乘法
1、关于gcd的四元组可以缩成三个,辗转相除是个好东西
2、然后观察gcd内的数,如果有互质的数,可以扔掉一半,然后大力推一波式子矩乘一下就没了
建图+混合图欧拉回路
tips:get技能,算是板子,类似黑白涂色可以转成混合图定向,欧拉回路也是一种解题方向?
最小割
1、牛逼建图,类似前/后缀限定前/后缀的约束,可以类似的建图,就是拉出两排点,对应的点连上INF,就好了
2、一段点能在拓扑序上连续,当且仅当每条路径被分成不选/选/不选
10-27
博弈+暴力求sg函数
简单交互?
tips:牛逼
tips:莫名自然??
堆+树链剖分
tips:超级钢琴的老套路,然后树链剖分无修改,可以单log维护重链信息(这不废话)
随机+质因数分解
tips:随机+异或,经典老套路,另外,为什么我在点分治
10-28
点双
tips:一定要想清楚你在干吗,是点双还是边双
ac自动机+矩阵乘法
差分约束+线段树优化建图
tips:算清楚数组范围!!!
10-29
lis+思维
tips:搞清楚边界
tips:儿子有序,可以人为的钦定一个顺序,搞清楚本质是啥
状压dp+基环树计数+容斥
tips:很棒的一道题,权值多思考组合意义
具体这题,先把权值变成染色方案数,然后容斥一下,然后就是基环树计数了,这玩意儿可以做到3^n,大概就是对着环容斥一下,每次删掉一些叶子。哦,还有事先预处理出来成环的方案数,这个大概就是状压一下链的方案数,注意要钦定链首是环上元素最小值,然后还要除二,然后就没了
学习了一波,dsuontree(这玩意儿不就是暴力树链剖分吗,小声bb
11-3
dp+优化
tips:非常非常妙的一个题,首先O(n^3)还蛮好想的,然后观察这个dp式子发现它的第一维毫无用处,然后观察dp本质,转化成一堆矩形上的操作,然后就可以O(n^2)做了
tips:感觉做的很迷茫的时候可以考虑一下二分答案,然后就是从小到大用贪心的方式逐步缩小问题规模
tips:首先O(n^3)的dp很好想,然后观察转移,发现转移和状态数同阶,然后记录一下可行的转移即可,注意去重
dp+线段树优化
tips:区间mx,mn直接上单调栈+线段树就好了
三/四元环计数
tips:这算模板?好吧,其实顺便复习了一下
贴个板子
另外一道三元环/四元环的题
11-4
并查集+图论转化
tips:好题,在线降智,注意图论模型的转化的时候要时刻知道当前转化下,答案是什么,点边的意义,是否比较,尽量简化,模型越简洁越好
计算几何
tips:挺有意思的计算几何,算是个小套路
tips:两个Cn2之间相差n!!!
11-5
11-6
最小生成树
tips:脑残现场
斯特林数+线段树优化dp
tips:感觉真正理解了斯特林数化简幂次求和在干啥,这道题大概就是斯特林数化一下式子,然后发现你需要算一堆组合数的和,然后快速转化为组合意义大概是选几个,然后就可以快乐dp了,直接dp是O(n^2m)的,然后考虑从小到大枚举Bi(有点东西),然后线段树维护一下每个决策点的值,再维护一下区间最值,然后就没了O(nmlogn)
tips:直接暴力算一下
最短路+dicnic最小割
tips:其实已经做出来了,但是我在发傻
贪心+结论
tips:场上证明了一下上届,但是我没有尝试去证明下届,然后就没了
sam+dfs
tips:暴力sam就好了
dp+lcp后缀和优化转移
tips:很妙的一个题,观察每一步,发现位移是相同的,然后由于不能超出根,所以每一步不能超出所在子树,所以可以直接贪心,维护一下每一位的深度即可
bitset+背包
tips:挺厉害的一个tips,st表+背包,st表真是一个神奇的思路
主席树+tarjan
tips:在主席树上跑tarjan,主席树的修改多考虑均摊
11-25
容斥反演复习
二项式反演
11-27
矩阵特征多项式+高斯消元/矩阵快速幂+向量优化
tips:作为一个合格的非退役选手应该至少具备的两个技能,,,
dsuontree+闵可夫斯基和
1、一个函数是否是凸的可以根据费用流来判断!!!重要技巧
2、正确使用闵可夫斯基和,快速合并两个凸函数的+,max卷积
3、dsuontree合并子树O(sz1+sz2)可以通过分治轻儿子+分治重链做到2个log
11-28
牛逼转化/结论+斜率优化+wqs二分
1、这个结论是真tm的牛逼,以后序列划分一定要打一个平方和的表(划掉
2、明确了一下斜率优化的写法,注意斜率可能和凸包重合,凸包上不允许三点共线
3、wqs二分的方案输出,重要!!!
行列式+图论
tips:多考虑行列式的意义,这里是邻接矩阵的行列式,大概就是每个环乘上一个系数然后加起来
通信
tips:通信题多考虑分组,有时候不需要记录具体位置,可以考虑能否判断终止
直接从前往后考虑即可
随意构造一下就好了
大力分类讨论一下就好了
tips:算是最降智的时刻了(flag,大概就是考虑一下度数,冷静分析一下就好了
tips:降智(flag倒了,首先算是一个小套路,这种区间shift可以通过引入实数下标,直接忽略左右移操作,然后简单dp,前缀和优化一下就好了
11-29
结论+二分
tips:这个结论怎么发现呢,首先不考虑模数显然是首尾配对优,但是现在可能会减去一个m,考虑将序列分组,大概第一组对答案的贡献就直接是x+y,第二组还需要减去一个m,也就是第一组满足x+y
期望概率好题
tips:需要复习
首先是转化,发现由于是连续段,所以相当于是选择两个向量然后做差然后和1/3比较算贡献,1/3不好搞,考虑把它放到复平面上,大概就是每个向量乘上一个单位复数根的幂,然后选择几个基准向量,就把问题转化成线段中最小异色段长了。然后有一个牛逼结论,大概就是把长度为1的线段,分成n段,最短的那一段的长度的期望是1/n^2,但是我们需要求最小异色段,这个大概就是枚举一下最小异色段的排名,算一下概率和期望,然后这个概率感觉不太好算,但是我们推一下式子可以发现,我们其实并不需要每一项具体概率,我们需要的大概是一个后缀的概率,这玩意儿就很好算了,然后就没了。神题!!!
边双联通分量+树上查分
tips:降智现场,其实非常简单大概就是注意到会gg的边只会是桥,然后直接缩点,然后树上查分一下就好了
codeforces555e
结论+树形dp
tips:首先注意到,我所能决策的主要有两部分,什么时候减去bi,以及行走的路线,先考虑前者,显然对于每个点,我最后一次经过这个点的时候再减去bi一定最优,然后我们就只需要考虑怎么走了,注意到捐献的钱其实是一个定值那我们肯定先取剩下的钱最多的那些点,这样我们的顺序就确定了,大概就是可以按照w从大到小建出一棵树,在上面dp一下就好了
结论+扫描线+并查集
tips:很棒的一道题,考虑a的求法,发现这个具有很好的单调性,大概就是如果把a的最小值作为根,可以发现整一颗树会变成一个小根堆,然后直接类似枚举最小值,从下往上做就好了
codeforces516d
12-02
tips:感觉真正理解了fwt,好题
论文题
tips:学习了一波Berlekamp-Massey,get新技能!!!
大原题
tips:大力dsuontree好像有牛逼一个log做法,还不太会,坑
12-03
凸包/半平面交
tips:建出凸包瞎搞搞就好了
hall定理+拟阵
tips:正确使用hall定理,(之前好像都不太会用
tips:通信题是不可能做出来的,这辈子都不可能做出来的
大概是首先要认真读题,然后正常反应大概就是每次需要求一个k级祖先,然后题目提示很明显,每个部分分对预处理复杂度和询问复杂度都有要求。然后一波乱搞发现过不去,考虑优化O(nlogn)-O(1)的长链剖分,你注意到这个做法的瓶颈在于预处理,然后注意到你每次可以询问两个值,但是我目前实际上只需要一个值就好了,另一个值浪费了,我们考虑把这另一个值利用起来,大概就是考虑meet-in-middle,我们尝试预处理出来一部分点到根的路径信息,然后每次从根和路径端点同时开始跳,这样我们大概需要保证每个点都能找到一个点p,保证p和当前询问点的lca的深度大于1/2,这样就ok了,怎么找点能,首先我们把子树深度和本身深度相等的地方的点标记起来,然后让它的父亲就不用选了,然后每次找到询问点与根路径中点的子树里的已选点即可