暑假进度表

  • 7.8

个人赛打的还可以,就是F题敲得太慢了,最后差十分钟做出来。image

补了一个重要不难但是原来没注意到的一个知识点 01bfs ,做了四道相关题,将F题写进了双端队列的内容中,感觉非常不错的一题。

  • 7.9

组队赛达到开始目标了(比一队少一题,乐)。image 有点遗憾,不对,非常遗憾,G题被卡了,原因是抄的BSGS算法板子很久没更新导致时间复杂度过大;F题trie树差一点思路,赛后突然想到,自己写了一段时间也出来了(悲)。

今天更新了BSGS算法,补了同余最短路,刷了三道题,重新补了悬线法。抄了网络流最大流的板子,预计未来几天每天抽出时间去刷网络流24题。今天题目确实很不错,一道悬线法,一道BSGS板子题,但是想到其实是不太简单的;一道trie树,很典但是没出,反思;还有一道莫队(待补)。明天写一篇个人题解。

  • 7.10

一整天状态低迷。

今天上午先把昨天剩下的莫队那题补了,收获了一个启发:莫队已经是 O(nn) 的算法了,一般维护一些区间信息尽量不使用树状数组这种修改与查询都是 O(logn) 的算法,而是使用 O(1) 修改 O(n) 查询的分块。听讲课,线段树,然后把自己的板子重新写了一下。

下午个人赛打很烂,思维题太多了,两场 cf 拼起来,做起来是真难受。image

晚上还是讲上午没讲完的内容,脑子昏昏的没咋听,做题也做不出来……(希望明天组队赛能保五题争六题)

  • 7.11

今天上午再刷网络流题目,有点慢只过了三道板子题,在过程中学会了一个图论中比较重要的技巧:点边转化(拆点和拆边)。

image下午言出法随,真就五题,还都是一血,还靠着罚时险胜黄队。不过有一题是高复杂度卡过的,有点胜之不武hh。

晚上又来到了脑子昏昏的状态,补了一道队友过的题,和队友商量着证明了一道题结论,剩了一道dp题目和卡过的那题(两种解法)没补,还一道树链剖分赛时想出来了但是时间一直不够没来得及写。明天补一下。

  • 7.12

上午艰难的补完树剖,然后补了昨晚div3的最后一题。

下午坐牢一下午,两个队友一人开出一道,成为唯一没有爆0的队伍!(有一只队伍用了我们跑出来正确的数据过了一题)(被带飞的感觉真好,一道数学一道字符串正好碰上队友强势部分)image

晚上回去补了昨天的dp题,打了牛客小白月赛。

  • 7.13

上午补了二维数点(二维偏序),原来只是了解原理,没有写过代码,实际写起来还是漏洞百出。然后写两道板子题,补了昨晚cf剩余的题目。

下午个人赛很可惜,差三分钟出两题(easy版本与hard版本,直接写的hard版本)。image

晚上打了一场蓝桥云课的周赛,有点烂。一个变式背包调好久还是被队友改对的。

  • 7.14

放假~上午又做了一道二维数点的题目。晚上打了一场牛客周赛,第一次赛时AK,激动!
image

  • 7.15

下午组队赛image 很迷,写了两道题都挂了,还是靠队友重新写的。唯一的一点贡献就是最后写了一道大模拟追平了一队的8题。这场组队赛感觉还是考察的很全面,B题网络流E题单调栈K题树状数组二分A题逆序对+LIS,感觉题目很好的一场。

  • 7.16

上午在整理计算几何的板子。

下午第一场牛客多校
image
开局我很快签完了H,队友写签到题Cwa了两罚有点伤。后来队友自己全力做A也很快出来了。在想了很久的BD后都没有思路,于是开始写I题的大模拟。写的时候问题很大,所以最后也没能过。赛后也补了一晚上才ac。

这场学到了两个很重要的思想:一是后缀和转化为前缀和维护(前缀和应该也可以转换为后缀和维护,关键在于插入新的元素的方向),二是判断一个数 x 的第 d 位是否为 1 ,转化为判断 xmod2d+1 是否 2d ,然后就可以对每一位建一个树状数组,维护模意义下的值域,就可以快速计数。

  • 7.17

上午把计算几何里关于点、向量、线段、直线的板子整理完了。

下午听课,然后找几道计算几何的题验证了一下板子。

  • 7.18

上午在整理计算几何关于圆、多边形的板子。

image

下午牛客有点坐牢。签到题开的也不是很顺利。很失败的一场,签到开的也很慢。D题结论题小wa一发,C题dp队友写的,H题队友很快给了思路,我开始写很快写完交上去但是wa了。然后和队友争执代码问题,决定队友重新写一遍,我继续看我代码问题。不过后来队友一直调不出,我加了一发特判抱着试一试的想法交一发结果过了……B题想的太复杂了,赛时写了将近200行代码还是t了。根号分治的思想是对的,最关键的在于时间复杂度没有分析对。

晚上补题+cf。

  • 7.19

上午因为补昨晚cf的题,用到了欧拉回路,所以去学习整理了一下欧拉路和欧拉回路的知识点和板子。

image

下午杭电多校队友很快做出H,我想了下B正确分析了复杂度,写了个dp队友看一眼也过了。然后是A稍微想了想就是个简单的哈希,队友正好有整理好的无敌哈希板子,也过得比较轻松。然后我选择去开C,队友开的M。直到封榜以后队友过了,而我还在艰难的调DSU on tree+树状数组的代码,最后连样例也没调过(不过后续调过了,但是tle了,原因在于写了个假DSU……)。

晚上补DSU on tree,还没有系统的学习过。

  • 7.20

上午恶补树上启发式合并,因为前晚cf一道题目原因,学习了一下欧拉路径。

下午继续做了树上启发式合并与欧拉回路的题目。讲课内容是高级数据结构,难度感觉有点大,只听课必然理解不了,预计下周好好补一下。

晚上指定一个下周的方案吧,看看能完成多少:

  1. 可持久化的数据结构(并查集、线段树)+线段树合并(分裂看时间)+可撤销并查集+平衡树。

  2. dp刷题(10道)。

  3. 组队赛出五题。

  • 7.22

上午去补可持久化线段树,原来理解还是不够深刻,这次要彻底明白原理。还有看了看可撤销并查集和线段树分治,正在学习中。

image

下午杭电体验其实还算可以,开局我先签1007队友在签1010,签到不小心wa一发,仔细读题以后过了,这个罚时怪我太心急了。队友很快过了1010。这时一个队友开始开一道字符串1011,我和另一个队友简单交流了一下1006觉得就是直接树型dp,感觉思路没问题我开始写一发过了。然后开始看1001构造题。不得不说构造题有点看运气,有时候出的很快,但有时候就是陷入一个小的地方出不来(本题就是)。期间队友过了1011,然后我俩开始构造,另一个队友去搞1008。期间还wa一次。构造了很久也没有灵光乍现的那种感觉,后来校内基本都快过了1001,队友终于想到了思路,写了直接过了。

这时候队友说1008基本找到了思路,想单刷,于是我俩就去开了1012,很快我想到一个错误的思路交了两次都wa了。队友也构造了一组反例出来,发现原来思路是很明显的错误(校内还有做这个题的两只队伍都是这个错误思路hh),感觉彻底破产还是来帮队友找1008的错误。我很快找到了两组反例,队友在改完以后还是一直wa。这时我觉得队友比较 (in[i]1)×2m(in[i]2) 这个式子在比较大小的时候不能直接比较系数,应该算出具体值。但是队友坚持因为每次度数增加这个式子是必然增加的。我因为最后时间比较紧迫就没有问具体思路,还是决定找代码层面的错误。遗憾的是最后也没能ac。赛后看题解发现我一语成谶,就是这个原因……(还有发现1012是洛谷一道原题?做题太少?加训!)

晚上补了1012,发现这题思路是很不错的,维护了100个并查集,每次按秩合并并查集树保证复杂度是 O(nlogn) 。然后对于每个点维护一个字符串,表示这个点在第i张图中的fa节点,这个字符串相同的若干个节点两两都是符合题意的,算入贡献。另外字符串需要哈希处理然后开个桶维护。

  • 7.23

上午补了线段树分治和可撤销并查集的知识点,觉得理解的还是比较到位的。因为现有讲解都很笼统,所以理解了很久。

image

下午组队赛我的评价是一坨,我说的不是比赛。L题看起来是个可怕的搜索,其实就是结论构造,队友反应很快并且跟我想法一致一发过了。B题也是猜结论,好像是裴祖定理证明。A题也是队友出的结论,wa两次一次被我找到一个遗漏的细节,一次是自己突然想到一个细节然后ac。然后队友在开J并且觉得自己思路没问题,然后就交给他去写了。我和另一个队友去开D。于是本场最大的两个错误出现了。一是队友debug一正常比赛都没de出J来,最后因为变量名写错wa了?……一是我和另一个队友双双读错题,并且想了两个小时为什么感觉非常正确的代码会wa?……

晚上补了第一场杭电的一道线段树分治+可撤销并查集的题目,并且加深了一下自己对于线段树分治的理解,打了晚上的cf,重回1800。

  • 7.24

今天总结来看就是整理完了线段树分治的东西,然后在回顾一下线段树进阶的内容,动态开点、懒标记永久化、可持久化线段树、线段树二分。

  • 7.25

上午继续看线段树进阶,主要是可持久化权值线段树(主席树)、线段树合并。

image

下午牛客多校,队友好猛,纯纯被带飞,全场小挂件。开局我很快发现签到题G,一发直接ac。然后跟榜开H和I。一个队友很快说出了I的思路,于是去写代码。我和另一个队友做H,队友也瞬间猜到了一个结论,我写了几个样例试了试感觉是正确的,于是H与I双双ac。然后来到了C题,队友也是很快给出思路,然后我就写了一会,被队友直呼写的太麻烦,于是自己开始写,一发直接过了(我还试了自己写的代码,第一发wa了,改了一个细节才过)。然后我又去和一个队友做A,另一个队友单刷F。我俩理解错题意,想复杂了,给原题加了限制条件,导致过的人很多但是迟迟推不出来。另一边没想到队友一发又过了F(真神),回来找我们A的问题,我把我们的顾虑给他说后,他想了一会有直呼没有这种可能(仔细读题以后确实没有),于是开始写+debug。也是写了有一会才过。最后来做J,想了很久,队友突然想到题目中k只有30数据量,猜测是二项式展开。我觉得非常正确,这样时间复杂度就来到了 O(30×n) ,非常合理。又是卡了一会队友推出式子,直接写了。不过最后因为二项式系数问题小wa一次,导致对内有点红温,调整过后ac。

晚上终于把线段树合并搞懂了,不过应用还是不够熟练,预计在刷一些题目。

  • 7.26

上午补昨天牛客多校的题目,痛苦debug。

image

最难评的一场。打的不算烂,但是真的很锻炼心态。上来签到题1012很快有了思路但是喜提wa2。在我和队友看来这都是不可能错的,短短几十行代码被反复查阅无数次……大概一个小时过后还是完全不理解到底错在哪了。此时我和队友心态其实已经炸了,三个人自己看自己的电脑完全无交流。不过我还是去和队友讲了1001题题意并且简单说了我的思路(一个dp)。队友简单思考过后开始写一发直接过了。这也在很大一定程度上重振了我们的信心。队友提出他重新写1001然后就过了??思路还是一样的并且原来的代码绝对没有问题哇??确实没时间思考了于是赶紧和队友来看1007。一眼线段树,在队友思路下维护差分数组一系列的信息然后我就开始写了。在此期间队友一发过了1011(貌似是三分)。不过我在很长时间的debug过后还是wa了。不理解+1。这时候队友要把我换下来写另一道图论,这个线段树交给另一个队友去重构。于是我又来和队友搞那道图论,队友思路出的也很快,我帮忙写了个dij在小wa两次以后也过了。这边队友的线段树也wa了。罚时大爆炸。于是索性不管罚时了,只求能过。最后队友改对了(喜)。剩余30min,没想到和队友简单一交流我们就把1003的思路口胡出来了。只可惜最后实在没时间写了。赛后看题解思路也是对的。

赛后我们把1012数据下载下来一个个对拍看看到底是什么问题。然后……全过了?这wa个锤子?在hduoj上提交……ac?** 真的想骂人了。貌似是赛时数据出锅了,当时在莽一发就好了(确实没那个勇气了)。还有也是找到了我线段树的错误所在。是我在向上pushup的时候队友单个节点的判断有误,或者说和其他情况一起讨论了但是其他情况不适用于单个节点的情况,加个特判也顺利ac了。

  • 7.27

今天一天因为没有多校都是松弛感满满,补题的思路也没那么顺畅了,于是索性下午与队友一起商量了一下未来的学习计划,对照着oiwiki将各个部分的知识点(银牌范围内)都分配一下,基础一点的是大家都理解原理,熟悉功能,然后一人能够熟练使用代码及一些变式。

晚上打了蓝桥云课的双周赛,喜提第二场AK!最后一题直接化身代码裁缝,将两道模板题抄在一起没想到直接过了!不过正好借这题整理一下超大数质因数分解的方法 Pollard_rho( O(n14) 复杂度)与整数拆分问题( O(nn) )的求解方法。

image

  • 7.28

又来立flag啦。

  1. 补题(牛客多校,杭电多校,cf,牛客周赛)(欠的有点多)

  2. 线段树合并刷题

  3. cdq分治

  4. ODT

  5. 平衡树

  6. 计算几何(与圆相关)

  • 7.29

上午补一道昨天的牛客,思维感觉很好,简述题意就是给定一个序列,每次可以删去一个数并且把这个数除二的结果加进数组,问若干次操作以后mex最大为多少。因为mex存在单调的性质所以考虑二分,先把所有数除到小于二分的答案,然后从二分的答案开始遍历是否出现过,并且可以继续对该数除二贡献自己值-1。

image

下午杭电不好评价,全场随机数,复杂度真分析不出来。上来1005一个模拟但是题意很抽象,我很快读懂题意并告诉队友,但是队友写wa了,还是另一个队友找出的问题。然后1009看起来不简单,但是后来看出来这就是一个序列自动机,也很快ac了。然后开始坐牢直到结束……

晚上补了下午多校的一道题,整理了cdq分治的板子。

  • 7.30

image

……

  • 7.31

今天听课数论进阶,把板子都更新了一下。补了杭电第一场一道cdq分治题目,简单求解三位偏序关系基本理解透彻了,cdq分治优化dp还是不太懂,不过觉得难度太大就不继续学了。还有就是继续整理计算几何模板。

  • 8.1

上午找了计算几何的题单,主要是想把所有的板子都验证一下,确保没有问题。

image
下午牛客多校被一队给满了压力。上来和队友交流了H题意,队友很快一发过了。然后开始看B题,我在找了几个样例以后直接猜了一个结论,也一发过了。然后A题一个小的树上博弈,两个队友都有自己的思路,期间担心队友直接使用double会有精度问题,想改成pair用分数比较大小,但是队友交上去直接就过了hh。然后就有一点陷入D题了,思路出的比较快的,但是因为要找出图上所有的环且放进一个集合里面,这个问题处理不了导致一直没有进展。后来我也是突然想到,直接把桥边去掉剩下的不就是一个个的环了?!然后按照原来思路写很快就写完了。但是因为不小心写错了节点数和边数wa了一发,背大锅。最后F题求一个森林补图的汉密尔顿路径,汉密尔顿路径是NPC问题,所有肯定是转化成别的问题。队友提出一个把森林看成二分图的思路,一下子就解决了!虽然还是花了一些时间debug,最后一发ac还是很不错的。遗憾的是最后I题dp题,我们一下了就讨论出了正确做法,但是十五分钟实在是来不及写了。

赛后补了I题的dp,J题是个思维题,没有什么算法知识,只是很难想。总结这场的问题:写代码能力不够好,导致为了降低错误率我们队伍一直是一人写一人看,导致人员资源的轻微浪费,只有一个人想思路较为低效且很容易因为一个小点没有相通而导致整体思路的堵塞;我对于一些基础知识点还是不够敏感,如果赛时能更快想到桥边,留出的时间是一定能够解决I题的。不过这场比赛我们也感受到了团队的力量,三个人一人一点想法结合起来就能够解决问题。

  • 8.2

image
今天杭电感觉打的一般,开始1011和1013都是规律结论题,我和一个队友打表猜了1011,另一个队友手推1013,双双一发ac。然后就去看了1006博弈题,队友已经有一个思路,然后只是剩一种情况没有讨论出,我们一起模拟一下也一发ac。然后另一个队友已经有了1002的思路,说了以后我们感觉很对,于是开始写,只是每次交上去wa了以后都能发现代码上的错误,于是改了交,交了改,一直wa了四次,我们感觉代码一点点问题都没有了,一个队友想要重构,结果还是wa。于是开始找思路上的错误,很快我俩都瞬间想到了一种更有的策略,交上去ac。这道题失误太大了,思路错误其实不是致命的,因为实力有限很难做到考虑的面面俱到,但是代码错误导致四次wa还是需要反思的。然后开1008,我坚信是道网络流求最小割,队友一开始怀疑,但是后来我提出两点取一式+虚点的思想,队友瞬间建好了模型,也是一发过了。最后坐牢时间也是有点久的,大概在1004、1005两题徘徊。1004我感觉是树上启发式合并,但是lcm是相当不好处理的。最后队友提出一个感觉有点正确的想法也没有改完,不过赛后看题解完全不沾边hh。

赛后补题:1004首先找出所有lcm对应的点对,这个时间复杂度是在 O(nlog2n)
image
这个是真的想不到,或者说原来没有做过这种的思路的题目,需要重点积累。然后按照询问的lcm从小到大排序,利用双指针的思想处理所有的lcm,每次将点对的lca打上标记,查询根的dfn子树区间和即可。

反思:关于lcm与gcd的技巧大部分都是调和级数的复杂度,尤其是限定了lcm与gcd小于1e5时。这方面还是很薄弱,需要多做一些题目在积攒经验。

  • 8.3

今天终于把计算几何的板子整理完了(三维的没有整,感觉赛场上很难做出来),耗时一周,共计800多行代码,每个板子基本上都找题目验证了一下,并且将每个函数需要调用的其他函数都注明,方便赛时不需要敲一些无用的代码浪费时间。
image

下周计划重点放在图论与树的知识点:

  1. 平衡树,KDTree和树套树看情况

  2. 动态树(LCT)

  3. 网络流费用流(同时加深一下对最大流最小割的理解)

  4. 虚树

  5. 整体二分

  6. 补题(补不完,根本补不完)

  • 8.5

上午补了点双连通分量和边双连通分量两个点,原来没有注意过,都是Tarjan很重要经典的应用。

image

下午杭电打的很烂,前期还算可以,我和队友一人一个签到开完1001、1003、1004,然后我去读了1005题意,弄清楚之后告诉队友,队友瞬间就有了思路,写完结果t了。然后把字符串hash将map换成哈希表还是t。这时我建议队友换成数组,但是队友把longlong换成int以后变wa。当时对思路深信不疑,我也觉得没有问题,在很久以后决定重写。然后我大部分都是按照队友思路写的,写完没想到直接过了。这时候被这题卡的队伍已经红温了,队友那边1007一直开不出来,我赶紧过去帮忙想,但是脑子一片混乱最后也没开出来。

赛后补了1002,关于菊花图的一些小细节没有注意到,其实这个1002是很好写的。反思这场比赛的问题所在,根本还是太菜了,框框开题一切问题都不存在了。还有就是队友深究一道个位数人做出来的数学题,虽然说不是主攻图论但是还是可以帮忙提供一些思路,提供一些情绪价值。赛时五小时还是非常宝贵的,以后一定要重点协调好队伍内时间的分配。

  • 8.6

上午看了圆方树的知识点,基本的理论还是挺清楚的,但是代码实现是真的抽象,需要对Tarjan有很深刻的理解。最后只参考别人代码勉强写了一个求仙人掌两点间最短路的模板题。

image

下午牛客打的一般,开场我看出J很签,和队友简单交流一发过了。随后I题队友说感觉可以二分,我就开始调二分,然后另一个队友直接找结论小wa一发后也过了。然后开始漫长的坐牢。D题没有思路,但是跟榜当时只有这一题可做。这题一开始觉得可能是根号分治,但是小于 n 的没有解决办法;后来想“好”区间有条件的合并,但是条件不好判断。这时队友提出可以让非法区间进行合并,最后用扫描线求面积并。思路基本正确然后开始漫长的coding,因为细节需要一直在讨论试错。在此期间另一个队友在开一道构造题,wa了很多次以后放弃了。这个时候我们代码终于完成但是交上去缺wa了。然后我开始对拍但是拍了很久都没错??另一个队友直接提出他上次做一个线段树题遇到类似问题:叶子节点可能还会pushup,但是其实是没有初始化的地址。改了之后终于ac!然后来看K题字符串。没有想到的是,我看完以后有一个大胆的猜想:找出最靠前的目标串与最靠后的目标串,中间就直接找出本质不同的子序列。队友一致觉得很对,但是还有一些情况需要处理。这里我犯了一个错误,我一直在想怎么找目标串回文后缀的个数,但是题目要找本质不同的串,所有只需要判断也没有就可以了。我明白过来迅速告诉队友并坚信这绝对是正解(事实确实如此),但是队友一时间没有很理解,我也不太懂队友板子没办法直接写,重构肯定来不及了,只能强行解释。确实有点急于求成了,队友没有深刻理解思路确实很难写出正确代码,最后没能开出来感觉很遗憾。

赛后我用三个小样例找出队友代码中的五六个错误,直接进行“批斗大会”。本场比赛还是昨天的问题,时间人手深感不够,负责数学队友总是想开数学题与一些构造题,简单还行,但是都是一些很少人做出来的,时间都浪费了。就算不擅长数据结构与图论,这个时间去写大模拟我觉得也是很好的。我本场的一个很大的错误在于太盲目跟榜,开题不够全,导致一眼出思路的K其实我一直没有了解过题意(队友两人都提前看过题目),一直在跟着做D。如果赛时我也提前开K然后配合队友双开也许是能够过K的。

  • 8.7

上午听黄队讲课,主要内容有:

  • 连通性问题(强连通分量,割点和桥边,边双,2-SAT) √
  • 欧拉路径和欧拉回路 √
  • 图匹配(二分图最大匹配 √ 二分图最大权匹配 × 一般图最大匹配 ×)
  • 支配树 ×
  • 网络流(最大流 √ 费用流 ×)

基本上原来都差不多掌握,除了比较难的几个点。预计去抄一下板子,就不花时间深入理解了。

下午和晚上和队友商量去刷edu和abc的题目(已经在刷)。晚上还学了模拟退火的玄学算法。

  • 8.8

上午继续abc。

image

下午牛客打的有点遗憾但是整体还可以。K题签到题为了稳我们三个一起检查了好几遍代码才敢交。然后看了A我大胆猜了一个结论:直接求出不在原序列中任意两个数的gcd,个数奇偶性即答案。碰巧前两天黄队分享每日一题和这个想法很类似,我写了一发直接过了。然后开E,我们很快找到了一个思路,并且复杂度在接受范围内,唯一难点在于快速求出一个数所有的约数。负责数学的队友很快想到反素数+深搜可以解决,调了一段时间代码后交上去段错误……以为哪里数组开小了调大交上去还是段错误……我直接暴力跑所有1-1e12所有数看看哪里的错误结果发现根本跑不起来。于是测了一个小数据真的段错误。不理解但是加个特判遂ac。J题构造题队友思路同样给的很快,但是因为一点细节讨论了很久,最后一发过了还是很不错的。最后来搞D题大模拟。题目真的巨长,队友码了一个半小时最后样例也没过……

赛后发现是下标应该从1开始而不是0???而且我给队友的一个大表格也有错误(发早了,当时看出错误了并且改正了但是发给队友的是错的……背锅)总结看还是码力问题,队友想边读题边敲码,结果一些重复相同操作的地方用一个数组可以很好的写出来,但是队友将一个代码块cv好几次……还是要都完整题目在开始写,而且大模拟确实需要早读题面并且充分利用机子空闲的时候来码大模拟。

  • 8.9

image

今天下午杭电打的很烂。开局1010我看出是个反悔贪心队友写了一发直接过了。然后1011一开始被队友思路困住了,反应过来其实很简单,wa了一次也过了。然后1009队友告诉我题意我瞬间有了思路,然后就让队友去写了,与此同时我和队友商量1004树上博弈。不过这个题我想复杂了,后来队友小小证明了一下结论,我第一发写挂了,队友找到错误改了瞬间过了。不过队友这边1009交上去却wa了,我俩看了很久也没有看出来。这样卡了很久以后队友终于发现代码的问题,艰难ac。最后和队友决定双开,我开1007一道线段树优化dp队友开1008一道矩阵快速幂。赛时我1007思路大部分对的,用线段树优化dp转移过程,但是多次询问让时间复杂度来到了 O(qnlogn) ,大概1e9量级,虽然时限给8s但肯定是过不了。于是我想用莫队将时间复杂度降到 O(qnlogn) ,但是删点的贡献很难计算出来。队友1008只是想到了矩阵快速幂,但是具体怎么计算还是不清楚,一直也没有试出来。后来队友突然提出回滚莫队只添不删,当时一度感觉是正解但是写不完了。

赛后发现1007是先用线段树优化dp预处理,然后在处理每次询问,就可以达到 O(nlogn+nq) 。其实对于这种多次询问问题很多都是先预处理来降低每次查询的复杂度,赛时一度接近这个想法,不过还是有一点瑕疵,就是我只想到了该位置到达的下一个最优决策点,实际需要处理两个。赛后按照正确思路自己也很快就写出来了。

  • 8.12

上午补了一道树上倍增维护信息的题目,一道计算几何(原来板子精度不够,更新板子)。

image

下午杭电打的比前两场好多了。一开始我看到1004很签,直接交一发但是wa了。然后队友想到了一种特殊情况然后过了。然后看1007,我当时写了个暴力,想着冲一发的时候队友突然来思路了,只需要考虑所有约数即可,然后调整一下一发过了。1012是这场最不顺利的题目,我很快转化了题意,并且看过题人数应该是个结论,然后三个人搁哪猜好久,期间队友凑答案wa一发一度红温。后来队友理清思路终于过了。这个题可以说是最没思路的一道,因为后面的三道题思路都很快。然后我自己直接去写1006,因为当时算了算暴力的复杂度貌似可以接受,两个队友开1005。1006很快写完结果t了,仔细分析n很小的时候确实不太行。队友很快提出一个新的思路,我立马开始写,结果写完交上去wa了。队友帮忙看代码,我去对拍,然后调好对拍一下就拍出来了,队友也马上看出来了,调整一下过了。于此同时队友觉得1005思路很正确,但是自己写大样例会跑很久明显t。结果仔细一看发现是记忆化搜索没有记忆状态(hhh唐完了),改完也一发过了。然后决定双开,我和队友看1008构造,队友思路大爆发,一下秒了,我马上开敲代码,小wa一次队友完善一下思路也过了。最后时间确实开不出新题了,1002队友有一个清晰无比的思路,但是需要用到生成函数队友没学完写不来。

总体来看还可以,赛时确实把能开的题都开了,而且罚时也没有太炸。有小错误也是可以接受的。晚上补了原来一场牛客对边bfs,补一个小知识点。

  • 8.13

image

下午牛客打的还算可以。A题纯纯签到,K题很快队友有一个三分想法,我立马开始写结果t了。发现小样例有问题以后再交一发还是t了。队友这时候想到一个大根堆维护,可以优化掉一个log写了以后也是犯了一样的错误,更改以后ac。这个签到罚时吃满。然后我们直接双开HI,队友I思路很快于是就去写了,我和另一个队友一商量H思路瞬间出来,于是也开始写。然后H因为我板子的一个小问题re一发,一直没意识到是板子的问题,队友直接把求解凸包去掉ac!差点战犯了。一分钟不到队友I题在wa了几次后也过了,这时候一度成为校内rank1,rank2甚至才两题。然后就开始卡题了,C题是个gcd相关,队友有点思路但是一直有一些障碍,但是B题看出来是一道前几天牛客的一道题的hard版本,因为当时没有看题解做法还被队友怒喷(背锅)。好在另一个队友理解了然后直接开敲最后一发ac。

上午和晚上都在学LCT,晚上学会了基本操作,做了几道比较板的题目,明天继续巩固一下。

  • 8.14

上午讲课计算几何,因为自己前几周已经整理过模板并且学了计算几何,所以听课听起来比较轻松,也学到了很多知识,加深了一些理解与认识。

下午和晚上连着做了很多道LCT维护生成树的题目,还做了几道上午学长讲课课件里的计算几何。

  • 8.15

image

下午牛客打的一般,开局光速五题,rank一度来到14名,结果坐牢一直到结束。D题队友有点思路但是一直wa,L题我和队友开了一个假思路,算错时间复杂度结果一直T还不理解为什么。赛时我想到了一个前缀和想法,但是因为思路不成熟被队友反问几句以后放弃了,赛后发现是正确的www。

  • 8.16

image

下午杭电打红温了。前面几道签到签的还算顺利,然后1001和1004这两题卡的很难受,1001看到赛时过了那么多以为就是结论题,然后打表找了好几个树形结构去猜结论,一直猜不到。卡了很久以后决定换题去看1004,当时很快就有了思路,大概就是树链剖分去维护一条链上的信息,然后找到深度最大的两个点检验这条链是不是符合的,但是找点还需要考虑是否在一条链上的情况,我又提出后续序排序先序排序各取边界,其实到这里思路大部分没有问题,就是后序先序需要多考虑几种情况。但是队友到最后也没有调对。

赛后调对了,并且我用LCT写了一份也轻松ac了。赛时线段树不知道哪里写挂了,当时1001开不出来有点急,导致后续心态受影响。1001其实是个不太容易的树型dp,只不过赛时好多人貌似都用不太正确的猜想水过了。还有1004赛时都有人暴力过了这题,不得不说一句数据真水。

  • 8.17

image

今天没有多校于是打了一场vp,还算可以,前四题队友思路出的很快,只是C题队友战犯if后面不带else导致白吃3发罚时,还一度怀疑是我们思路错了。J题也是比较简单的,只是有比较多的细节。然后B题和G题过题人数差不多,但是我听了队友G题题意以后当时就有了一个启发式的想法,大概就是维护一段区间删去一个点以后两端区间分别的逆序对数,可以直接用总逆序对减去这个点与两边分别形成的逆序对数,然后暴力遍历小的区间去减去所有贡献,然后暴力找出小区间所有的逆序对,就能分别求出两端区间的逆序对,时间复杂度 O(nlog2n) 。可惜当时队友都不是很理解我的思路,但是这个需要用到可持久化权值线段树,于是就让擅长数据结构的队友先帮我把我需要的求出来,然后后来我直接上机开始敲。期间队友一度觉得我写不完了,但是最后十分钟终于调对样例交上去MLE,改小数组TLE,把memset初始化换成遍历TLE,加上最lj的#define int long long最后一分钟极限ac!原因是我写的过程因为着急有几个可能会爆int的地方没有用long long。赛时也听了B题题意,当时队友有一个猜想赛后发现真的是对的,除了有一个需要考虑贡献的地方有点难想,代码实现还是非常简单的。

  • 8.18

image

最后一场也算有点小高光了,前面最签的三题1008、1009、1011基本都是我的思路+结论,1002是队友想的dp,1010其实是个觉得很难,没有一点思路,队友提出一个按位考虑的想法,当时想到这个思路以后觉得不是很正确,因为会涉及进位的问题。但是抱着试一试的想法交了一发没想到直接过了hh。最后1001和LIS有关,当时我想到倒序考虑就变成一个个往里面加,写一发交上去wa了。对拍以后发现思路完全是错的。

赛后看题解发现1001确实想不到,用到Dilworth定理,一张有向图的最长链等于最小反链覆盖,还需要用到费用流,费用流还没学……

  • 8.19

下周学习计划:

  1. 爆刷abc

  2. vp

更多的还是在刷题中学到知识吧。

  • 8.20

image

vp去年ccpc网络赛,难度很大只做了两题耻辱下班。

晚上刷了几道abc,然后去整理了最小费用最大流的模板,还有二分图最大权匹配和二分图最大权完美匹配。

  • 8.21

上午还是整理了昨晚没有整理完的模板。

image

posted @   mhw-mathcode  阅读(87)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示