区队模拟赛 - 0614

T1

注意到\(R - L + 1 \leq 10^6\),所以可以直接暴力的枚举

  1. 对于每个数,首先可以先判断是否为完全平方数,可以先打个表,\(O(1)\)判定
  2. 对于质数的问题,因为\(x \leq 10^{12}\),所以可以直接使用\(\sqrt{10^{12}} = 10^6\)的质数去除,线性筛预处理骗你的,暴力的\(O(n \cdot \sqrt{n})\)也可以过

T2

首先,如果没有这个方向的选择的话,直接bfs即可

其次,如果n很小,可以分层图,每个点在相同位置出队一次,模拟在原地等

那么我们就有了一个观察:需要分层图的原因就是要一步步原地等,但其实没有必要

思路

  1. 在到达某个点后,如果想走方向\(d\),那么就需要在原地等待到可以走这个方向
  2. 我们可以通过倒序思想,预处理粗来一个数组\(nxt[i][j]\),表示在第i步不步及后,方向j最早可以被使用的时间
  3. 这样8个方向的边权值就出来了,可以去跑\(dijkstra\)-->\(80pts\)
  4. 由于最短路径的长度很短,可以直接用桶装每个距离对于的点,按距离从小到大美剧,这样就不需要优先队列了
posted @ 2026-09-08 13:20  Zhenggeek  阅读(3)  评论(0)    收藏  举报