菠萝🍍の刷题记录3 - “他们说太烫要放手 太远要换个路口”

ABC总结

昨天ABC糖丸了。

468 - C题(已完成)

这道题是个再简单不过的暴力枚举,而我使用敏锐的眼睛和聪慧的大脑展示了何为神。在急头白脸地思考\(1h\)。回头看发现刷了一堆黄色搜索的自己据然什么都没想出来。重新用正解补一遍好了。
今天打算高强度训一些\(C\)和\(D\)。下次一定要快速地切出四题。

468 - D题 (未完成)

场上挂了。急头白脸地想出了一个板子哈希结果把题目读错了,本质思路是枚举中间点然后向外扩展,使用哈希之后时间复杂度应该是严格小于\(O(n)\)的,如果相同就继续扩展,有一个不同也继续扩展,大于一就停止。

等一下。我是\(shaber\),这一题并不需要哈希,直接比就好了。感觉我哈希做魔怔了。不过事实上,我的哈希掌握的也不太好,过几天可以去多练练。

不过需要注意的是:枚举中间节点需要分为奇数中心和偶数中心

感觉\(D\)并不难,要不顺便把\(E\)摸了?
先把\(C\)做掉好了。

425 - C题(已完成)

这题感觉还好,第一眼的思路是拼两个数列+前缀和预处理。
写的时候发现由于有取模\(n\)的操作,所以需要特判一下。
我的\(cloudflare\)能不能够过的去得靠电脑心情。
不过可以用\(vjudge\)。

422 - C题(已完成)

一道小唐题,感觉只需要比较一下三个字母的个数即可。普及-的难度感觉差距也不小啊。

交了一发然后挂分了。原来我才是小糖人。

这道题目是这样的:它能够组出多少组比赛由三个字母共同决定,但是由于每场比赛都必须包含一个\(A\)和一个\(C\),所以不难想到我们的答案一定会\(\le min(A,C)\)。然后我们发现如果只考虑\(A\)和\(C\)的数量是不行的,因为最后是需要三个字母才能组成一个比赛的,所以最后我们的答案是:\(min(A,min(C,(a+b+c)/3))\)

注意要开\(long\) \(long\)

433 - C题(已完成)

待会儿再说,先去弄初赛了。
这道题的整体思路有点像是链表,对于当前的这个点存储一个指针代表它下一个达到的点。感觉有点像猴子在丛林间抓着树枝荡。
首先预处理出好几个段(每个段中的元素是相等的)。用两个\(vector\)分别取存储两个段得长度和段的数值。
最后遍历这些段,如果当前段的数值等于下一段数值减一,那就让最终答案加上\(min(v1[i],v1[i+1])\)

洛谷入门赛总结

昨天本来想放松一下去打个入门赛,结果差点没给自己打死。
主要是最后一题场上没有调试出来。

神奇的背包(已完成)

真好,再获考场上没有做出橙题殊荣。
其实我觉得这道题目是有黄的。它是一个01背包+完全背包的混合体,需要多加一个维度去判断当前有没有拿过无限物品。

由于空间复杂度和数据范围的限制,你不能在开\(long\) \(long\)的情况下把普通背包的数组给开出来。所以需要用滚动数组去优化掉一维空间。

然后就是状态转移方程,大部分情况都还是各转各的。只有在选择无限物品的时候需要考虑一下:你需要专门去开一个临时数组存储掉没有用过无限物品的情况,然后再在这个临时数组之上进行完全背包的操作,最后再把这个临时数组和用过无限物品的情况取\(max\)最优数值。

我的考场代码依旧是写得很混乱,到时候等这题的题解放出来再看看怎么优化好了。

436 - C题(已完成)

一眼\(map\),上位橙和下位橙的区别怎么这么大?

438 - C题(已完成)

一眼没思路,只是感觉可能可以模拟。没忍住去看了眼算法标签发现了:栈。那感觉就没什么阻碍了。
不过后来仔细想,你再给我三十分钟我大概也想不到栈。我可能只能弄出一个手写栈,但是认为它是模拟。确实是一个很大的知识漏洞啊。明明是普及组不算不重要的算法。
后面再去写几道栈和队列相关的数据结构题目吧。

439 - C题(已完成)

一道比较简单的普及-。
等等……WA!

qwq我是\(shaber\)。注意题目中的“当且仅当存在一对”。

440 - C题

这道题目有点难做,想不出来。先把后面的题目想出来再看看。
我承认我的意志力不太坚定。我去看题解了。

等一下……这么简单?我是\(shaber!\)
image

441 - C题

大概看了一眼题目,时间复杂度的瓶颈应该是在排序的\(O(nlogn)\)那里。
要考虑最坏的情况,也就是高桥把所有的水都喝掉了,且装水的杯子都装了很多水。
先把液体从大到小排序,假设前面的\(n-k\)个被子里面全都是水。如果说液体总质量-水的质量是小于高桥要喝的水的话那就直接输出-1即可。
接下来就能够保证剩下的\(k\)个被子里面全都是酒,那么就喝最多的即可。

橙题之间亦有区分啊。

442 - C题

似乎是。一个比较简单的排列组合。
需要注意的是如何判断每个人有多少仇家。因为给出了很多组关系,所以正常写题的时候最好不要边输入边处理。
不过这道题目已经给出不会输入重复的仇家关系,所以无伤大雅。

443 - C题

由于\(1e9/1e2=1e7\),所以可以直接模拟。
等等。好像是二分。做掉了。

看了一下题解,发现实际上是不需要二分的。直接使用模拟就好。
但是我觉得二分更方便。

444 - C题

一道写过的题目。不过是C里面比较难的。考场上的思路相当混乱,现在来整理一下好了。

先进行排序,最长的poki可能是没有被弄断的,也有可能是被弄断的。如果它是被弄断的,那么真正的poki长度肯定是\(a[1]+a[n]\),因为最多能碎成两根,如果想要匹配成功,那么肯定要让最大的匹配最小的。

得出最长的poki的可能长度后,我们让第二长的匹配第二短的,然后持续重复直到匹配完毕。

等等。好像不能这么匹配吧。哦哦,其实是可以的,但是要先把长度已经为完整的poki给踢出去。

我觉得这道题目的难点在于你要想清楚一根完整的poki最多会分成两半这件事。

445 - C题

不难发现它要么形成一种循环,要么因为\(a[i]=i\)就此停留在一个地方开始死循环。所以我们要做的就是研究一下这个规律然后把代码打出来。

栈和队列相关练习题

表达式括号匹配

一个相当基础的栈的练习。

posted @ 2026-07-26 10:59  Baltic  阅读(11)  评论(0)    收藏  举报