前言
逐渐适应这里的生活,一切都变得更加温柔美好起来
Day13杂记
今天终于比以前早起了——5分钟!哈哈哈哈...早起5分钟待遇还是不一样啊,又与糯米鸡重逢~
早上考试真的是和题目(不,是和自己)斗智斗勇:
T1:哇塞!大水题,直接桶排,快速切掉,100分大约稳了吧
题面有些问题,好多人都被坑了,还好我赌对了qwq,考试的时候纠结了半天来着
T2:直觉告诉我:哈希orKMP,但是我不会打,好现实啊啊啊啊
机智地翻书找到了KMP的模板,但是我不懂原理啊,所以做法比较暴力,直接枚举模式串,硬生生把一个n(N+M)的算法做成了n(N^2),光荣40分
T3:题目读半天读不懂,考后发现原来我不是一个人,我寻思这些出题人语文都不好吗qwq... ...我好难啊
还好旁边的兄弟友好解释题意,赶紧打了暴力,结果暴力都没调出来,考试就结束了,20分飞了QAQ!
T4:灵光一现——状压啊啊啊!(从来没觉得自己如此机智),50行代码简单搞定,以为起码50分
结果考后发现数组开小了,20分又飞了QAQ!!
总之这次考得一般般,不是很满意,好多遗憾呀,加上40分就达成200分的目标了嘤嘤嘤
下午回寝室洗澡洗头,夏天洗漱完后感觉好爽....浑身舒畅...
回机房的路上,晚霞如油画颜料般涂抹在天幕上,殷紫渐变为桃红,像少女夏日最热烈的妆容
蜻蜓在周身徘徊,一只猫从脚下钻过,池中游鱼嬉戏
发觉已走到机房门前,景色已然变换,却似有什么已烙在心底,铸就一簇蒸腾热烈的美好,亘古不变
晚上做题、改题、写博客,又去听了老师的评讲,十分鬼畜:
什么“二维偏序”,“三维偏序”,“二维树状数组”,“二维线段树”,
什么解决“二维偏序”用“二维树状数组\线段树”,解决“三维偏序”离线用“CDQ分治”,在线“树套树套树”
什么“二维和一维没什么区别”
什么“树状数组一秒就理解了”
大家:“哎呀6啊!”“巨啊!”“大佬!”(略带起哄性质,哈哈哈好皮的说) 或者 一脸懵逼
很奇葩的是讨论一道有关线段树的题目时,老师发现做法有Bug,自己出了个数据把自己Hack了hhhhh....
(老师好高啊(我总觉得是学长),起码一米八、九)
好吧,听了一些有用的,听不懂的就算了,继续回机房捣鼓
随便说说
1.开通了博客园,还没把博客搬过去,也许以后会两边都更
链接:https://www.cnblogs.com/LunaSmile/
2.考试技巧总结(避免再犯最近犯的恼人的智障错误)
1.检查空间开够没有
2.算好空间,避免MLE
3.检查文件输入输出
4.多组数据时,输出答案要换行
5.未完待续...(以后应该会开个专题记录)
题目解析
日常推荐+特别鸣谢:https://blog.csdn.net/ha_ing/article/details/99462749
一、rank
https://blog.csdn.net/qq_36294918/article/details/99449178
直接桶排,从小到大输出k个数即可
二、seek
https://blog.csdn.net/qq_36294918/article/details/99450211
哈希orKMP
上述方法掌握了就会做(然而我不是qwq)
三、pot
https://blog.csdn.net/qq_36294918/article/details/99546306
毒瘤数据结构题,方法更新了好多次(“维护5个东西”的那个方法好像有Bug,不清楚),最后大约如下:
维护7个东西:
1.最大前缀和;2.最小前缀和;3.最大后缀和;4.最小后缀和;5.最大子段和;6.最小子段和;7.总和
然后就是“合并”的问题了,自己想想吧2333....
四、游戏节目(show)
https://blog.csdn.net/qq_36294918/article/details/99551466
小数据就暴力+折半搜索+二维偏序
我尽力了orz
贴一下大佬的解析:
T1:
通过观察样例,可以发现一遍 sort 然后输出前 k 个即可,题面错了就将错就错呗……
T2:
递推求每个前缀 / 后缀的 Hash 值,然后枚举即可。
T3:
考虑维护序列的最大子段和和最小子段和,答案要么是最大子段和,要么是序列的和 - 最小子段和,这样就能考虑到环的情况。
可以用线段树维护,注意不能全部都选!
这样的话,可以用线段树维护区间的答案,然后输出 的答案和 的答案取个 max,这样就不会都选了。
哦听说有人不会用线段树维护最大 / 最小子段和?那我来补一下。
只说最大的,最小的类似。
在线段树每个结点上维护这个区间的和、最大前缀和、最大后缀和、最大子段和。
那么合并儿子信息的时候,区间和很简单;最大前缀和有两种选择,一种是左儿子的区间和 + 右儿子的最大前缀和,一种是左儿子的最大前缀和;后缀和类似;最大子段和要么是左儿子的最大子段和,要么是右儿子的最大子段和,要么是左儿子的最大后缀和 + 右儿子的最大前缀和。
然后如果还要询问区间的话就类似地拼一下,就是代码长了点(对于我这种长期写树套树的数据结构选手来说还好还好
T4:
我没看见 ,于是就想了一个比较一般的做法 QAQ
(如果你看见 那合并就是二维偏序了)
考虑折半搜索,即前 个 DFS 一次,后 个 DFS 一次,然后合并答案。
这样搜索的复杂度是 的,然后考虑如何合并答案。
我们可以把每次搜索的结果写成一个三元组 ,分别表示 A 队的总得分 - B 队的总得分,A 队的总得分 - C 队的总得分,选了多少个节目。
那么我们实际上就是求在前一半里面选一个三元组 ,后一半里面选一个三元组 ,使得 的方案数。
移个项,即 。
然后你会发现这其实是个三维偏序问题!可以树套树 / CDQ 分治解决。
复杂度是 ,而 最大只达到了 ,所以咱不慌(逃
考场可能树套树写炸了……
(事实证明是算偏序的时候排序排错了造成了贡献的错误统计啊啊啊啊还我 AK)
此题题解上我博客了:https://www.alpha1022.me/articles/jzoj-3512.htm
十分精炼(其实是因为没时间了)的总结
自己今日题解中的一段话,拿过来也十分适配:
“ 通过这次考试,得出了教训:
学什么都不能一知半解,要尽可能地去弄懂吃透才能灵活变化、运用,来应对变化万千的题
进而才能做到 ‘ 一题多解、多题一解 ’ ”