2021.09.15pm
作者:互联网
|---|预期|实际|
|---|---|——--|
|A|100|100|
|B|100|20|
|C|100|100|
|D|100|30|
|E|10|10|
|S|410|260|
可能水,一定菜
A 相遇问题 \(\blacktriangle\)
- 这道题我写过题解了,
押题成功here
B 龙&虫 \(\blacktriangle\!\blacktriangledown\)
一年前写对了,一年不如一年- 其实就只是一些离谱的小问题(类似代码模块粘贴没修改完,以及虫和人方向整反了)
- 这道题数据范围给的十分特殊:\(N*M \le 20000\) (但实际最大只有\(128*128\)),解决方法:
- \(vector\) 但这玩意效率低,容易\(RE\), 还容易 \(MLE\)
- 所以考虑把矩阵压成一行,把每一行拼一起就行(其实\(C++\) 的二维数组就是这样开的连续空间)
- 对于打得到敌人的判定,我觉得之前的方法反而更好,甚至对现在的我都有启发作用
- 先是今天的方法:每到一个位置,看敌人是否在他八个方向之一,在查找自己与他的路径上是否有墙
- 再是之前的方法:预处理所有能打到敌人的地方,判断虫是否能到达。这样时间复杂度能从\(O(nm*(n+m))\) 优化到 \(O(nm)\),而且代码也更容易实现,出错可能性更低。
- 现在很多题都有点不求甚解,复杂度能过就行,这样一道题的价值是没有利用完全的,要继续尝试优化改进。
C 有重复元素的排列问题 \(\blacktriangle\)
- 绝对是数据特别水,我旁边的机子试了一下 \(497*a+3*b\) 跑了一个多小时,长度接近\(10G\)
- 这道题硬搜都能过,但我们还是考虑一下优化
当然也可以用康托展开- 先\(sort\) (这个不加也没法字典序)
- 树状数组+分治 \(O(\log n)\) 修改及查找空位(
这个考场谁会写啊,过会补过来) - \(nx\) 标记预处理 \(O(n)\) 后 \(O(1)\) 找到下一个字符
D 警察找车 \(\blacktriangle\!\blacktriangledown\)
- 笑死,语句拖出来忘记把 \(break\) 改成 \(continue\) 了
- 稍微沾点模拟。
- 注意事项:
- 必须前进,不能原地打转
- 可以回到之前走到过得地方
- 同一轮扩展要给到的点打上标记,不然重复访问数组存不下要炸掉。(编数据调试出来的)
E 勇士
符合题意,勇士才会去做
\(\cal {Made} \ {by} \ {YuGe}\)
标签:2021.09,15pm,---,blacktriangledown,这道题,数组,blacktriangle,100 来源: https://www.cnblogs.com/u2003/p/15285360.html