菠萝🍍の刷题记录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!\)

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\)就此停留在一个地方开始死循环。所以我们要做的就是研究一下这个规律然后把代码打出来。
栈和队列相关练习题
表达式括号匹配
一个相当基础的栈的练习。
^^本文来自博客园,作者:Baltic,转载请注明原文链接呀喵☆*: .。. o(≧▽≦)o .。.:*☆:https://www.cnblogs.com/Baltic/p/21926396
浙公网安备 33010602011771号