7 月 28 日闲话

dongri-chaoxi / 2023-07-29 / 原文

P2580 于是他错误的点名开始了(黄)

注意事项

  • 除特殊情况,推荐使用 unordered_map,省去一个 \(O(logn)\) 复杂度。
  • unordered_map 中查找元素:vis.find(s) == vis.end()
  • 注意定义时的数据类型;iterator 可使用 auto

犯の错误

  • 没有注意输入格式,导致 m 的输入位置错误,调了半天。
  • 循环结束条件把 i <= n 打成 i <= m,以后调试时需格外注意。

P2234 营业额统计(绿)

注意事项

  • 因为是查找目标元素两边的元素,lower_bound 得到的 iterator 可能需要进行 -- 操作,所以插入一个极大值,一个极小值防止越界(※)
  • s 中插入最大最小值时,只能插入 INT_MAX / 2-INT_MAX / 2,否侧会产生爆 int 等错误(只有 \(30pts\)

犯の错误

  • 没有认真读题,题目说了可能存在负数
  • iterator 没有进行解码 * 操作

P2665 Game of Lines S(黄)

注意事项

  • 本题是思维题,无代码难度。因为在平面直角坐标系内,所以题目中说的平行线可转化为这两条直线所对应的一次函数斜率相等

  • 因为可能会有两个点,过它们的直线平行于 \(y\) 轴(垂直与 \(x\) 轴),直接计算斜率会导致除以 \(0\) 的数学错误,所以需要进行特判,枚举到时将它们所对应直线的斜率记为 INT_MAX

犯の错误

  • 维护不同种类斜率数量的 std::set 的存储类型类型一开始写的是 long long,后来发现斜率不一定为整数,所以类型为 double