其他分享
首页 > 其他分享> > 2021.09.15pm

2021.09.15pm

作者:互联网

|---|预期|实际|
|---|---|——--|
|A|100|100|
|B|100|20|
|C|100|100|
|D|100|30|
|E|10|10|
|S|410|260|

可能水,一定菜

A 相遇问题 \(\blacktriangle\)

  1. 这道题我写过题解了,押题成功here

B 龙&虫 \(\blacktriangle\!\blacktriangledown\)

  1. 一年前写对了,一年不如一年
  2. 其实就只是一些离谱的小问题(类似代码模块粘贴没修改完,以及虫和人方向整反了)
  3. 这道题数据范围给的十分特殊:\(N*M \le 20000\) (但实际最大只有\(128*128\)),解决方法:
    • \(vector\) 但这玩意效率低,容易\(RE\), 还容易 \(MLE\)
    • 所以考虑把矩阵压成一行,把每一行拼一起就行(其实\(C++\) 的二维数组就是这样开的连续空间)
  4. 对于打得到敌人的判定,我觉得之前的方法反而更好,甚至对现在的我都有启发作用
    • 先是今天的方法:每到一个位置,看敌人是否在他八个方向之一,在查找自己与他的路径上是否有墙
    • 再是之前的方法:预处理所有能打到敌人的地方,判断虫是否能到达。这样时间复杂度能从\(O(nm*(n+m))\) 优化到 \(O(nm)\),而且代码也更容易实现,出错可能性更低。
    • 现在很多题都有点不求甚解,复杂度能过就行,这样一道题的价值是没有利用完全的,要继续尝试优化改进。

C 有重复元素的排列问题 \(\blacktriangle\)

  1. 绝对是数据特别水,我旁边的机子试了一下 \(497*a+3*b\) 跑了一个多小时,长度接近\(10G\)
  2. 这道题硬搜都能过,但我们还是考虑一下优化当然也可以用康托展开
    • 先\(sort\) (这个不加也没法字典序)
    • 树状数组+分治 \(O(\log n)\) 修改及查找空位(这个考场谁会写啊,过会补过来)
    • \(nx\) 标记预处理 \(O(n)\) 后 \(O(1)\) 找到下一个字符

D 警察找车 \(\blacktriangle\!\blacktriangledown\)

  1. 笑死,语句拖出来忘记把 \(break\) 改成 \(continue\) 了
  2. 稍微沾点模拟。
  3. 注意事项:
    • 必须前进,不能原地打转
    • 可以回到之前走到过得地方
    • 同一轮扩展要给到的点打上标记,不然重复访问数组存不下要炸掉。(编数据调试出来的)

E 勇士

  1. 符合题意,勇士才会去做

image
\(\cal {Made} \ {by} \ {YuGe}\)

标签:2021.09,15pm,---,blacktriangledown,这道题,数组,blacktriangle,100
来源: https://www.cnblogs.com/u2003/p/15285360.html