练习记录
有的时候。我看着我们班的那些牛牛牛们一起玩儿。会有点惋惜和后悔。如果我以前更努力一点。我是不是就能加入他们呢。
风吹起了从前
一道在模板上稍稍做了一些改动的trie树。主要难点在要用一个\(vector\)去存储每个节点有多少个符合要求的字符串
于是他错误的点名开始了
这道题要用双哈希
兔子与兔子
这是一个字符串区间哈希值板板。求区间字符串哈希数值建议string下标从1开始。
雪花 雪 雪绒花
这题昨天晚上就开始写了。结果没看数据范围以为所有雪花的程度小于等于\(9\)于是使用了\(char\)愉快地挂了\(45pts\)红温了。今天早上折腾了\(deepseek\)半个小时发现了问题后重新写。结果发现没有计算时间复杂度,用了双哈希+\(map\)超时了,又红温改成了单哈希+\(unordered map\)终于过了。
这道题目就是在哈希的基础上做了一点正反向操作。反正不难,如果要使用双哈希记得估算时间复杂度。
做哈希做的有点头疼。打算去玩耍一些最短路树状数组的题目(注意到我本来应该在弄初赛题目但实际上并没有)
贪婪的copy
这道题目还挺有意思的。
读题发现\(n\)和\(p\)给的格外的小还很疑惑。猜测出题人想要\(Floyd\)作为正解。但是我不太爱写那个。
所以一开始的思路是用\(dijkstra\)乱搞,把样例都过了结果发现测试点十挂九。红温了重新检查代码再读题。无果询问\(deepseek\)发现\(dijkstra\)的乱搞只能支持“恰好经过了\(x\)个点”的解法。但是本题不需要恰好。
本题的正解思路实际上是\(floyd+\)全排列。
但是还是想知道能不能用\(dijkstra\)去实现。遂又去找\(deepseek\),发现不只是状态定义的错误。我的乱搞本质上全是错的。这道题确实也可以用\(dij\)去实现,但是需要用状态压缩的思想十分麻烦,所以懒得写\(dij\)了直接尝试\(floyd\)的做法去了。写完对着样例调了调交了,发现死活编译不出来红温了。等了三分钟终于过了。
后来想了想如果加大数据是不是能把\(flo\)卡掉,结果自习分析时间复杂度发现\(dij\)的耗时实际上比\(flo\)要大很多,加大数据只能把两种做法都卡掉。
道路重建
开题很惊喜。因为发现这题的\(n\)依旧很小,从\(copy\)那里得知出题人1应该依旧想让我用\(floyd\)。
看了看题,发现这题的意思就是如果道路坏了边权照旧,道路没坏边权归零,然后跑一遍\(floyd\)就好啦。测样例一发过,结果评测挂了八个点。下载了一个样例出来瞄了一眼,发现我确实不太会使用\(floyd\):边是双向的,但是我的标记只标记了单向然后它挂了。
评估时间复杂度和各项事宜后发现\(dij\)应该也能做,只不过好像由于加边的方式不同代码实现方式不同,\(dij\)会比\(flo\)要麻烦一点。
感觉这样刷题对于我来说刚刚好,既能学到东西也确实有必要且很舒服,刷绿青太痛苦了。我决定这样水题知道洛谷黄题通过量\(>200\),然后再开始刷绿。
Sweet Butter 香甜的黄油
本题看完题目发现它是一个裸\(floyd\),不太想做了。结果看了眼讨论区发现这道题似乎另有玄机,所以就敲了代码。
交上去挂了好多个点,回来一看发现\(flo\)三层循环不是\(<=\)奶牛数而是\(<=\)牧场数。但是这题奶牛数给的是\(n\)。改了就过了。也没发现玄机。
然后打算去写一点最小生成树的黄。我是不会告诉你我现在在逃避数学黄题和贪心黄题的。
Cherries
惊讶地发现自己好像已经忘记了最小生成树的原理。不过好像也没什么关系。
读题读了很久,不过想做法没花很长时间。因为\(kruskal\)的实现方式就是将边排序,又意识到最终的最小生成树一定会有\(n-1\)条边,那么就先把长度为\(1\)的边能用的都用上,后面再用长度为\(2\)的补充即可。
又想了一下如果实在场上做,如何识别出来是最小生成树。这道题并不是一个很难看出来是图论的题目,樱桃为点,糖线为边。“使得每对樱桃通过糖丝直接或间接相连,并且甜点的含糖量最小”这句话其实一眼最小生成树了,并不是很难识别。
聪明猴
题目看完之后就像出来了做法且确定会对,所以打算口胡一些不写代码。先对各个坐标建立最小生成树,统计最大边权然后和每个猴子的跳跃能力进行对比即可。想了想要不还是写吧。毕竟我好像还要通过两百题。
浙公网安备 33010602011771号