算法马拉松 5.5

赛时时间安排

读题 7:35-7:50

把题都读了一遍,看到T4有种省选B卷两天的T1的感觉,决定一会儿先去看看

T4 7:50-8:05

打完暴力回想起CCF给省选D2T1造的水数据放过了一堆假做法,决定仿照一个假做法打一下试试,然后就过了。。。

T5 8:05-8:35

决定先去打有两档部分分的T5,先码了个第一档暴力上去,没想到获得了两档的分数。。。利用IOI赛制的特性验证了一下发现应该是顺便把第二档过了。

又想了一下感觉T5可能是一个神奇换根,决定先跳(赛后发现是点分治)

T2 8:35-9:30+10:00-11:00

先花25min打了个爆搜上去,获得了10pts,随后从组合数的角度思考了一会儿,没什么收获

十点后又重新从DP角度进行了思考,先是码了个假DP,然后从假DP上获得了些许灵感,想出了许多做法,但最终复杂度总在\(O(n^6)-O(n^7)\)这个级别,有点崩溃

T1 9:30-10:00+11:00-11:50+12:20-13:00

总结的时候才发现居然在这道题上耗了这么长时间

9:30-10:00 大脑放空,一直没有思路,9:50决定无视捆绑测试,直接交个Yes上去,发现居然有50pts,交了个No,发现有20pts,就先翻回去想T2了

11:00-11:50 发现漏读了关键信息

每层楼只能有一个同学上电梯或者下电梯

于是经过一番挣扎,想出了一些判断正误的必要条件和一个\(O(n^4)\)的DP,吃饭前把必要条件打完了,获得了80pts

12:20-13:00 继续码T1的DP,码完后却发现Wa了,调整了几处细节后仍然没有改出来,80pts走人(赛听ztw讲后发现DP有一维是不必要的,增加这一维反而会带来一些错误信息)

T3 13:00-15:00

13:00-13:30 看着像是AC自动机,就先码了一个出来,却发现有些信息不会统计,自闭了

13:30-14:05 无奈打了个爆搜上去,居然只有5pts

14:05-15:00 在T2、T3之间反复横跳,没发现什么特别可行的做法,期间贪心获得了T3的20pts

赛后总结反思

第一次打这么长时间的比赛,其实每道题难度/数据强度没有特别明显的差异,但从每个时段得分率就能明显看出,状态是在逐渐下滑的

赛时应该把T2的\(O(n^6)\)DP码出来,起码能比爆搜多20pts

T3的爆搜居然没有转成记搜(DP),又丢一些分。。。

总之今天居然在这种第二档分的暴力DP上出了问题,决定不时做一两道有一定技巧,但对复杂度要求不高的DP保持手感

知识性收获(题解待更)

个人感觉今天的题目质量非常高,应该会补这场的题解

T2:背包类问题的两种优化技巧

T3:广义矩阵乘法

https://www.cnblogs.com/luckyblock/p/14430820.html

T5:关于较复杂点分治的思考

闲话

越学越觉得各类知识都是相通的,例如背包生成函数,例如Floyd矩阵乘法,例如前几天练习题的树状数组+倍增线段树提取区间,而对于算法的优化是无止境的,将我们过去应用于别的算法的优化迁移到相似的算法上有时会取得令人惊叹的效果,这或许就是算法知识缘何晦涩而绚烂吧。

posted @ 2021-05-05 21:31  Robert_JYH  阅读(103)  评论(0编辑  收藏  举报