Loading

SD集训总结

比赛

D1

8:00–8:10 读题,T1没太看懂是什么东西.T2,3暴力挺好写的,先写T2,3暴力。

8:10–9:00 T1,可以写一个暴力,枚举状态,然后dfs跑联通性。考虑性质,貌似点值是单峰的,某个点突出,向四周扩散递减。
9:00–10:30 T1,发现m特别小,可以直接枚举nm,处理每个点i值为j的DP值,凭感觉换根DP就可以了。然后挂了,调了半天调不出来。
10:30–10:40 考虑要不要放弃T1写T2,3,看了几眼题目,满脑子都是T1根本想不了其他的。
10:40–11:00 T1,发现换根的时候多余点的系数贡献没削干净,调整后过掉了大样例。理论复杂度是nm^2logV
11:00–11:50 T1,随便造了一组大数据,发现跑了10s。考虑优化。DP时,对于父亲和儿子值的m^2枚举,可以预处理前后缀,用容斥优化到m,于是复杂度nmlogV.发现快速幂非常之慢,做了[nm*大常数]次,可以直接预处理出nm个逆元,然后数组O1访问,这样只用做nm次。于是卡到了4s,O2 意义下2s。莫名想到光速幂,试了半天反应过来这不同底,根本做不了,如果要离线做复杂度还会多一个log,反而更劣。考虑到评测的机子跑的很快就放了。

回顾&反思

T1: 貌似很直观也很签。如果能想到固定的根的DP,那么做个换根就可以了。不过感觉考试的时候换根思路一开始不是很清晰,导致后面的修改调试耽误了很多时间,没有更多时间思考T2,3,尤其是T2的40分。可能是最近一段时间都没有做过换根DP的缘故?以前做cf什么的发现换根有很多种写法,这次考试的时候也纠结了半天,然而忽略了~~适合自己的才是最好的(划掉)~~一切要依据于题目,最后还是按照自己的想法去写了,效果还是不错的,但是还是显得有一点生疏。

T2:感觉很亏啊,考试的时候不知道怎么就和长度m杠上了,非要多枚举一个长度m,然而事实是总和递增,所以总和本身就代表着一种"有序",所以直接按总和做状态就可以了。感觉这道题想的有点浅(也有可能是几乎没花多少时间在这道题的原因),导致只拿到了n<=30 的弱智分。把维度改一下,40pts就有了。至于正解什么的,实际上就是在暴力DP的基础上进行根号分治,取答案的时候限制一下保证是当前钦定的状态就可以了。比赛时想到过长度有限的性质,但由此想到的都是些队列bfs和剪枝dfs什么的,完全没往根号分治上想。忽然想起来,我好没做过几道根号分治的题目。另外一点小trick就是,这个std非常妙,dp的时候直接开n\sqrt n 是开不下的,但是观察dp式,发现访问下标的跨度只有2m左右,于是就可以建立mod 3m意义下的数组,类似于 3m 进制的滚动数组。

T3:没什么想法。看题解是各种奇奇怪怪的数学推导。等什么时候订过再来upd这一条吧。话说考试的时候莫名想到了狄利克雷卷积什么的,才发现自己对常见卷积以及独角晒这一块有点陌生了,回去后要再看看。

换根DP,根号分治要加强练习。

省选数论,尤其是狄利克雷卷积、独角晒这些东西要复习。

滚动数组的trick。

D2

8:00–8:05 读题,T1又臭又长还是数据结构,先做T2、3。
8:05–8:25 T3,S<=25随便DP做。
8:25–9:00 T2,可以做背包,物品总数最多log个,考虑直接NTT做背包,然后暴力卷k次得到答案。写完调了半天过不去才发现这模数不是NTT模数,需要任模NTT用CRT合并。然而我忘了常用模数有多少根本没法做。考虑暴力试模数,然而我把模数改成998244353也不对就很怪。
9:00–10:30 T1。发现答案与差分有关的性质。n<=1000暴力模拟即可。没有34操作可以线段树。没有3操作可以可持久化线段树。内存已经400MB了。考虑没有4操作,可以splay,但是不太好做。大胆猜测正解就是splay,但是如何支持可持久化呢?不清楚。
10:30–11:50 T3,重新审视T3,n<=1000 可以容斥。思考m-n怎么做。

赛后: T1分析性质时没有考虑ai为负数的情况,即我推的规律在有负数时不成立,挂0.T3 一个1e10级别的long long 没有取模,乘的时候乘炸了,爆long long。总共接起来挂了 50分左右,呜呜呜呜。

回顾&反思

T1: 不知道怎么形容,比赛的时候完全没反应过来数据范围带了一个绝对值,推的性质只在正整数情况下成立,虽说更一般的性质只是稍微拓展一下就行了,但是维护完全不一样然后完美爆蛋。忽略绝对值这种错误不知道犯了多少次了还是犯,很无语。对于正解,性质方面,有个很妙的转化就是发现序列左右反转答案本质相同,所以可以先维护答案的2倍,然后再除以2就可以了,这要比直接维护答案要简单得多得多,思路和实现方面,感觉思路方面主要还是卡在可持久化上了,比赛的时候完全不知道怎么可持久化splay,然而实际上不许要对数据结构可持久化,反过来,可以对操作进行离线,尤其是这种撤回贡献比较容易的题目,往往就可以用到"操作树"这样的trick。
T2:忘记NTT模数就很亏,不熟悉任模NTT就很亏,不然可以再多拿大概30分的部分分的。
T3:啊,忘记取模,做的时候只考虑了对于乘法的取模,完全没注意到一些数字本身就会超过模数,然后炸掉,这一方面是考虑周到与否的问题,另一方面也是经验的问题,这种错误以后坚决不能犯了。

回顾splay.

掌握"操作树"的trick.

复习任模NTT。

注意取模时不仅要对乘法等取模,还要关心数本身的值域,对于很大的数要单独取模。

D3

做核酸耽误了点时间,大概8:10左右才看到题目
8:10–8:15 读题,T2又是个读不懂的sb题。依旧先做T3,T1.
8:15–8:35 T3,对于n<=5000,可以n^2扫,双指针维护选了哪些数,枚举右端点,贪心删除左端点即可。
8:35–9:20 T1,对于n<=5000 暴力模拟即可。考虑数据随机怎么做,想到考虑每个数的贡献,然后就发现这玩意可以直接过1e6 A掉??。考虑每个数的贡献,钦定枚举的数为最大值,二分查找有贡献的区间,再二分找到两边达到min的区间长度,容斥的累计答案即可。注意卡常数,卡过1e6应该是没问题的。写的时候出了一些问题,很快调试完毕。
9:20–9:35 T3,考虑5e4怎么做。莫名想到莫队,维护出当前最优答案即可,然而这种做法实际复杂度无法保证,且不具有正确性。
9:35–10:00 T2,终于读懂题目。对于k<=5想dfs一下,然而仔细算一算发现复杂度爆炸。图有环不好处理,考虑tarjan锁点后变成dag 然后DP,但问题是每个连通分量无法处理。发现k<=5最多走的步数很少,想到对于每个连通分量枚举花了多少步数,然而这非常复杂且还是离不开环相当缩点一点用没有。又想到对于一个开关,其被按超过一次,当且仅当存在一个更大的开关被按了,考虑能不能维护每个开关的状态DP,但是存在很复杂的情况只是维护这些貌似不太够,考虑状压,然而这依旧无法回避环的问题。又想到高斯消元,然而暴力高斯状态数高达2000,n^3复杂度根本完不成,而且得到的解貌似不能保证是想要的解。
10:00–10:50 T3,考虑能不能维护每个元素第一次出现的位置和最后一次出现的位置,然后贪心去做,然而实际情况很复杂这根本实现不了。依旧想到不同询问的继承关系,然而很假。
10:50–11:10 犯瞌睡
11:10–11:40 T3,空跑了一下5e4*5e4,发现跑的飞快,于是直接将询问按左右端点排序,固定左端点,枚举右端点,更新对应区间的答案,复杂度最大n^2/2,注意常熟感觉应该能跑过。自己随便随了一组数据只跑了1.2秒左右,何况这还是win7的机子。
11:40–12:00 检查了一下freopen和文件夹就提交了。

回顾&反思

T1: 很"计蒜客"很签到(当然主要是因为题目弱化到了1e6),nlog二分乱搞就过了。调试时间还是稍微有一些长。对于正解的O(n)做法要学习。

T2:比赛的时候完全没找到DP的方向,感觉自己每次遇到这种带环,图,瞎几把走的题目就不知道怎么写。正解的DP状态很简单,i,j,h,从i到j,开关不超过h,利用开关只有更高的开关按下才能再按的性质,在限制大小后,最高的开关最多按一次,然后就可以枚举中转点DP了。比较巧妙的转化是将题目的钦定变为DP时的不钦定,再由原本的不钦定通过转化模型变为钦定,这貌似是个常见的套路 or 思路?再考虑钦定的时候,相当于每个询问是一个点,然后强制走对应的端点,所以DP的框架几乎不需要变动,枚举的时候,如果是询问的端点,把强制走的系数加上就可以了。

T3: 青蛙题,不是很明白为什么学姐的nQ能卡过5e4而我的不能。首先是套路,类似于扫描线,针对区间式的询问,可以根据右端点存在对应点的桶(vector)里,然后向右移动右端点,将前面的答案转变成"当前右端点意义下的答案"或者说考虑了当前右端点的贡献和影响的答案,那么区间询问就变成了线段树或者其他什么数据结构的区间累计了。一个性质是,在当前右端点的意义下,某个区间取某个点作为分界点,左边的权值(种类数)一定大于等于右边的权值,而又一个右端点的贡献不会影响到上一次出现位置以外的区间,于是暴力打tag,加权值就可以了。

先不考虑限制再考虑限制的DP技巧。

询问转化为点模型(或者说DP中的一个一般模型)的trick。

区间询问问题维护询问的桶做扫描线的trick。

D4

8:00–8:05 读题,T1 数学题,T2 可能是个DP或是什么东西,T3数据结构。
8:05–9:00 T1,考虑怎么贡献答案。容斥做貌似不太好做,考虑直接暴力分割。可以钦定咸蛋长度递减,那么最长的线段至少为n/3上取整,第二条线段至少为剩余线段的1/2上取整,且至多等于第一条线段的长度,上下取整的问题可以通过扰动解决,同时容易证明只要这些都满足,必然合法,且第二条线段的上下界必然合法,那么也不用考虑与0取max的问题,这样式子就变成了非常优美的一般代数式。显然该式可以拆为三部分,分别计算相加即可。
r e s = ∑ ⌊ n + 2 3 ⌋ ⌊ n − 1 2 ⌋ i − ⌊ n − i + 1 2 ⌋ + 1 res=\sum\limits_{\lfloor\frac{n+2}{3}\rfloor}^{\lfloor\frac{n-1}{2}\rfloor} i-\lfloor\frac{n-i+1}{2}\rfloor+1 res=3n+22n1i2ni+1+1
优雅,这个式子实在是太优雅了
9:00–9:40 T3,数据范围非常鬼畜,关于测试点成正相关。对于n<=5000,可以暴力维护队列,模拟。思考ai=1,等价于区间染色,想到用线段树维护暴力跳,容易证明复杂度正确。码了一半发现自己不会维护。
9:40–10:30 T2,某得一点想法。考虑 2 k − 1 2^k-1 2k1,发现异或后大于K的二进制部分必须为0,于是做了一个直接将小于等于K的数字随意取3个的超级假做法而我比赛时还没反应过来。想到FWT维护xor,然后统计答案,但是题目两两的限制不好维护,而且题目范围过于庞大。
10:30–11:50 盯着T2,3自闭。T2想到了做类似于数位DP的东西,但是数字很多,而且不好联系不同数字的DP。

赛后: T2部分分结论完全假掉,要使得异或高位部分为0,除了都为0之外,还有一种情况是都有且都相等;T3 由于时限大且机子跑得快,最暴力的程序能多拿大约20~30分,然而我的分段限制的太死只拿了5分QWQ。

回顾&反思

T1: 人类智慧数学题。通过扰动处理上下取整的方法还是比较套路的。
T2: 丢了大约10分部分分很亏,有时候在讨论性质和等价关系时,总会漏掉一些情况或是想当然,这个是需要改正和锻炼的。对于正解,其实本质上是数位DP,对于联系,只要把套路的对于单一值的数位DP放在trie上就可以了,自己对数位DP的理解太死了,根本没想到trie树。建出trie树后大力分类讨论大约14种情况做就可以了。另外暴力建trie树是会爆炸的,但是这里不关心节点来自哪里,只关心树的结构,那么就可以直接预处理出各个完全二叉子树,类似线段树区间加一般当区间为完整的2的幂时直接替换为对应预处理的子树就可以了。
T3: 依旧是一个很妙的转化,不再考虑每个位置具体是什么值,由于每个操作更新颜色相同,可以转而考虑每个询问的贡献,具体的,考率贡献的开始和结束的时间戳,更具体一步,考虑影响范围内每一个颜色存活时间的max。考试的时候貌似想到了维护询问贡献的时间戳,但是不知道如何维护。正解这里采用了分块解决,考虑到分块做法的优越性,整块和散块个数和暴力做的话复杂度是对的,那么就可以直接将整块看作一个单位,采用暴力做法,对于散块,处理出完全包含该点的区间个数前缀和以及半包含的区间,依旧暴力做就可以了。
考虑性质和分类讨论时,要考虑周全。
对于多个元素的数位DP等,可以考虑将每个元素建成一个图、树结构,比如trie树,体现彼此的联系。
当只关心图、树的形态时,可以考虑在不影响答案统计的情况下,预处理一些标准的情况减少工作量。具体的,比如建立trie树时,对于大的数据范围,可以考虑预处理若干完美二叉子树,直接替换对应区间的结点,而不需要每次向下暴力加。
一些区间的修改和询问可以转化为贡献的时间戳问题,而不需要具体讨论修改后的结果,进而可以考虑每个位置、每个元素的贡献。
分块的套路要学习掌握。

D5

8:00–8:05 读题
8:05–8:25 T3,n<=1e4随便输出即可。T2,n<=1000 无脑枚举模拟。
8:25–9:20 T1,n,m<=1000 模拟,fi=i-1 可以特判距离。fi=i/2,深度为log,可以开log个线段树,暴力维护答案。考虑正解,想到线段树合并什么,不过貌似做不了。
9:20–9:40 T3,特殊点,点构成了两条垂直的线,但没观察出什么性质。
9:40–10:30 T2,考虑ai<=2,可以通过拆分贡献,用前缀和算出前缀的答案,但是要求求出区间的答案不是很好求。考虑容斥,但不是很好算。考虑能不能莫队,感觉做不了。
10:30–11:10 T1,考虑能不能算出距离一个点一定距离的点集的答案,也许可以搞一个偏移量用数据结构搞一下,意识到树的形态复杂,偏移量无法维护。
11:10–12:50 T2,顺着之前的思路继续想,没什么结果。

回顾&反思

T1: 其实在写这篇反思的时候这道题还没订。大致思路是,可以观察到颜色是一步步跨越的,切由于max的关系,有的区间在增加,有的减少,考虑维护段,然后复杂度均摊是正确的。这种套路貌似没见过,要学习。
T2:一堆trick,可以发现题目要求的就是众数的答案,众数有trick,可以把数字贡献拆成1和-1,然后询问又可以放到分块上根号分治之类的。
T3:用到半平面、极角排序之类的知识,不是很懂。

感觉这种数据结构题的各种trick都比较陌生诶,主要还是学习trick吧)))。

D6

8:00–8:05 读题,今天又是数据结构没跑了。
8:05–8:30 T3,n<=1000,可以模拟,n^2写的好一点就可以了。对于没有修改操作的档,直觉告诉我可以直接预处理前后缀O1回答。
8:30–8:40 T2,没读懂题,推不出样例。
??–??? 做核酸
???–9:40 T1,低档暴力模拟即可。容易发现除的次数最多只有log个,考虑能不能分块,维护每个块对于某个x的答案,发现比较难维护,因为加数是往前加的,每次修改会导致后面的答案不可用。
9:40–10:50 T2,原来是题面错了))。实际上就是要求区间内前几大不重严格小数,加上系数算答案。对于第一档暴力模拟即可,然后,就发现总是过不去样例。然后发现因为模数过大导致随便乘一下就爆long long,得用龟速幂。于是平添另个大log。随便一个数据跑10s都跑不完。于是预处理相应的幂,卡到4s.考虑能不能用__int128什么的,然后发现编译通不过不知道为什么(赛后问同学才知道是要64位)。于是这道题光暴力卡常就卡了好长时间。考虑R-L<=300,感觉出题人的意思是可以暴力维护?但是这样做最坏时空复杂度都是1e9左右,根本过不去。
10:50–12:50 对着T1,2自闭。

回顾&反思

T1:分块。虽然不是很清楚具体怎么分的。貌似维护的方法很神奇。回来看懂了再补充吧。
T2:根号分之+莫队+分块+bitset维护+精细实现
T3: 随机化+极角排序,不懂。

D7

8:00–8:05 读题,DP+数学专场
8:05–8:30 T3,T2 暴力分模拟即可。
8:30–8:40 T3,多看了几眼,考虑能不能筛,发现没有一点用。
8:40–10:00 T1,暴力很难写,考虑分析性质,发现对于红树每条边对应原树上的路径,要求路径都有合法的边。如果路径本身就是原树的一条边,必然这条边不能动,如果两路径有交,也不能动。所以怎么写的。发现短的路径限制很强,而长的路径限制很弱。考虑先做小的,再做的大的,于是维护线段树处理路径和是否大于0就可以了。但是路径相交处不能选,我还要预处理处路径相交的地方,这怎么处理呢?分类讨论过于复杂,而且根本讨论不出来。也许可以通过线段树上对应值的变化判断?但是不可能暴力扫线段树,而线段树上的点又是零散的。二分做貌似可行,可这样是3个log,根本过不了。忽然想到如果两路径都造成贡献,那么答案是2,于是维护历史最大值判断是不是2即可。对包含关系特判。就可以了。
10:00–10:35 T2,直接计算答案貌似不太好做。感觉可以分别计算可重等等答案然后容斥去重。可是怎么DP呢?暴力维护状态,那么每次添数会重复,还要阶乘去重,不等和相等又会重复,还要控制顺序,如果真的要容斥,由于数组状态不一样,容斥系数根本不一样,根本就没法容斥。随便写了个DP挂的很惨。先看T3吧。
10:35–11:40 T3,直接做复杂度1e9,过不了。发现右试每个乘积因子必然大于0,考虑能不能对k^2讨论。容易发现这只有根号个,然后讨论与k^2的delt,分析发现对着完全平方数底数的增加,总值增加在2x级别,那么暴力枚举delt复杂度也是根号,总复杂度是优雅的O(n)。发现对于枚举的一个k和delt,贡献是一个delt加上若干等差数列的积,非常有规律性,如果这个能快速算出来,就可以O(n)解决这个问题。问题是我不会算这玩意,或者说这玩意根本没法算。猜想总状态数可能并不多,考虑能不能根据因子算什么,这样貌似还要容斥,然而事实是状态数高达6e8级别。这不行那也不行,那就打表吧,然而答案与模数相关,枚举模数的打表估计几个月都打不完,考虑能不能换个大模数打表什么的,事实上这样根本不行,因为答案非常大,随便几个2乘积就能溢出何况根号个。考虑能不能对模数拆分质因子,用最小公倍数乱搞什么的,事实是这个公倍数非常大,根本做不了,而且非常多,打表也开不下。然后又想到CRT合并各种乱七八糟的东西,当然都不行。
11:40–12:40 T2,考虑怎么DP,能不能直接对lcs考虑,可是lcs是个n^2的。不管怎么搞复杂度都不对。
12:40–12:50 心态有点爆炸,感觉5个小时啥都没干,T1正确性还是个迷,暴力也不好打。
赛后: T1结论假了直接爆蛋。

回顾&反思

T1: 结论和我考场上推的很接近但又不同。考虑每条边被覆盖次数,每次删去次数最小的边即可,可以用线段树动态维护。一个更秒的做法是,可以发现性质,如果直接把每条红边和蓝边重合的边删掉,并把对应的两端点缩点,如此可以将树缩成一个点。如果没能缩成一个点,那么久不和发。用mutiset维护出边,map记录边的个数即可。
T2: 还真是DP lcs,考虑有用的只有|i-j|<=2,于是压缩搜索范围直接爆搜???具体实现还没看懂。
T3: 数学题,各种模意义推导和二次剩余什么的,于是发现有用的数很少,剪枝后直接暴力算。具体实现回头再看。

D8

8:00–8:05 读题,T3是个提交答案。
8:05–8:10 T3,发现读不懂格式和评分规则。
8:10–8:20 T2,对于部分分和之前考试某道题一模一样,DP一下貌似就可以了。
8:20–8:45 T1,发现性质,拆分点双,答案独立,若某个点双为几个共用边的几个简单环构成的,那么对于一定数量的颜色,任意状态都可以操作得到,答案可以O(1)计算。问题在于对于一个单独的简单环怎么计算,考虑圆排列公式,但不是很对。又想到斯特林数什么的。考虑能否DP,发现要保证字典序最小,这与状态直接相关,没法DP。于是写了一个n<=4的暴力,暴力找环,最小表示发hash即可。
8:45–10:30 T2。对于部分分考虑直接容斥,组合数前缀都是可以暴力求解的。考虑数字达到 1 0 500 10^{500} 10500 后怎么做。无论数字多大对组合数都是没有影响的,再模意义下运算即可,关键在于对于0的组合数如何判断,其本质是对数字大小的比较,考虑如何实现大数的比较。容易发现,值域上界只有 1 0 500 10^{500} 10500 左右,所以高精即可。暴力高精存储数据,运算时用其模意义下的数值即可。写完发现样例2过不去,一度怀疑是自己高精写错了,调了半天发现自己读入有问题,一个数字读不进去,很奇怪,这个时候我突然发现,题面中的负号tmd是中文负号,而其给出的输入输出文件是没有问题的,测试后发现自己本来就是对的。考虑m<=50怎么做,想到折半状压之类的东西,不过没有一点用。
10:30–11:10 T3,终于读懂题目,要求只用位运算实现两数的加和乘。做task1,二进制拆分,随便写一下发现分数只有6分。意识到要控制深度,写的优秀一点就可以拿到10分左右。
11:10–12:50 思考T1简单环的计数。没什么想法。

回顾&反思

T1:简单环的答案需要波利亚计数,不知道是什么东西。
T2:需要组合数转多项式的技法,还没仔细看。
T3:人类智慧实现6-3,7-3加法器。

总结

一晃一个星期就这么过去了,曾今匆匆的来,而今又匆匆的去。
满打满算大概八次比赛,风格各异,也算是几个专项了罢。
每一场感觉打打第一题的签到,后两道就拼部分分,有时候部分分也会失掉一些,尤其是后面几天,感觉连续的打得不是很好。其间出现了不少问题和失误。
一些问题:

  1. 题面要读清楚:不知道有几次考试是因为没读清或是没读懂题面而造成时间浪费。
  2. 尽量使用文件测试:记忆犹新的,有个考题题面样例的符号是个中文符号,导致读入出现了问题,而我考试的时候因为用黑框复制粘贴测试,一直没发现问题,耽误大量时间。
  3. 看清楚时间限制:有些题因为时间限制的特殊性,一些复杂度不是那么优秀的算法也能骗到很多分。
  4. 注意数据范围,对于特大数要考虑是否需要单独取模:考试的时候碰到过1e18级别的数字,而我只在每次乘法之后取模,然后就直接乘炸了。
  5. 考虑性质、逻辑和条件判断等要考虑清楚:一个非常老的问题。所有情况都考虑了吗?这样做真的对吗?会不会有重复,有多余,有遗漏?手捏样例了吗?真的能实现吗?会不会有边界问题?对拍了吗?
  6. 检查分段:分段逻辑是否有问题?continue、break、return在分段时处理好了吗?暴力是否百分百能跑过,是否应该保留?对每个分段的风险评估?
  7. 对拍

比赛状态与策略
感觉头几天打比赛状态还好?后面几天感觉状态一直不太行,也许是有几次发挥比较差的缘故?吃个半分饱,进入教室,发下考题,就听见前面几个在窃窃私语:“这不是原题?”“这不是签到?”。拿出笔和本来,盯着电脑,余光已经看到同桌脸上得意的笑容。虽然说有好几次,所谓窃窃私语者并没能所谓"签到",同桌也是莽某道题也没莽出个结果,不过自己貌似确实把这些看在眼里。心里想着,自己做自己的,然而尤其是考的比较差那几天,看到这些,听到这些,心里终究不禁毛毛的。回想起来还是有点好笑。依然是那句话,自信很重要,心无旁骛很重要,专心做自己的很重要,不放弃很重要。这些都是说烂的,不过都是真是的话,都是真理。
策略上的,好几次考试都是倒序写的,本质是先打暴力分,这本是没有问题的。然而在这之后,要么是莽题,要么是沉迷部分分导致一些比较好想的高档分没有时间精力去完成。取舍很重要,一味的莽是不可取的,这叫孤注一掷;一味的沉迷部分分也是不可取的,不是为了部分分而写部分分的。对整体节奏和分数得失要有清楚的把握。
遗漏和不足

  1. DP的水平还是有一定差距:从什么方向下手?是否有更简化的DP?对于一些模式的题目,是否能发掘其状态的性质,减少DP规模?以及和其他只是点的杂糅:组合数学、生成函数等。
  2. 数据结构题的能力:尤其体现在lxl的场上,尤其是分块、扫描线这一部分。遇到信息有时不知道怎么维护,可以从什么方向维护,对元素本身分块?还是对操作分块?以及对于一些固有问题的套路,众数变为求前缀和,修改和询问通过扫描线的思想消除掉一维,变为只修改或只询问或区间变单点。这种数据结构题往往不是那种很死的就是用来莽的题,其有自己的套路和思考方法,这种题做的还是比较少。
  3. trick:这一次考试出现了大量trick:比如建立操作树将可持久化问题离线;众数问题利用+1-1的转化变成区间和问题;颜色段合并的trick;建立序列和时间两维建立扫描线平面,消除修改或消除询问或区间变单点;对操作分块,重构的trick;注意DP状态少,减肢记忆化爆搜的trick;多项式转组合数,组合数转多项式的trick等。
  4. 一些(有点偏)的知识点:波利亚计数;组合数转多项式/多项式转组合数;生成函数单点神仙操作;高阶差分等乱七八糟的东西。
  5. 已学知识点的巩固:数论(督教筛、迪利克雷卷积等),多项式的各种操作(求逆/根/exp/导/积分,任模NTT,二次剩余,原根等),一些数据结构(splay,lct,左偏树等)。

QAQ

posted @ 2022-06-20 19:12  Cafard  阅读(58)  评论(0)    收藏  举报  来源