Codeforces Round #159 (Div. 2)

A. Sockets

  • 当插口数不够时,显然找最大\(a_i\)进行扩展。

B. Playing Cubes

  • 枚举起始颜色,Petya会尽可能相同颜色,Vasya则相反。

C. View Angle

  • 极角排序后,用\(atan2(y,x)\)计算相邻的角度(范围在\((-\pi,\pi]\)之间),取反则包括所有点。
  • 两个点时需要特判,因为不需要取反。
  • 要注意的时,统计的应该是不同的角度,可能存在所有点在一条直线的情况。

D. Sum

  • 根据\(a_i \le a_{i+1} \le 2a_i\),得到\[0\le a_{i+1}-a_i\le a_i\]
  1. 若\(a_{i+1}-a_i-a_{i-1} \ge 0\)时,此时\(a_{i+1}-a_i \le a_i \le 2a_{i-1}\),则\[0\le a_{i+1}-a_i-a_{i-1} \le a_{i-1}\]
  2. 若小于0,说明\(a_{i+1}-a_i \lt a_{i-1}\),那么\[0\le a_{i-1}-(a_{i+1}-a_i) \le a_{i-1}\]

E. Greedy Elevator

  • 2棵树状数组分别维护电梯里的人的信息和等电梯的人的信息。
  • 关键时间点:
  1. 下一个有出电梯的楼层;
  2. 下一个有要搭电梯的楼层;
  3. 下一个等电梯的人的到达时间。
上一篇:T-SQL查询两个日期之间的休息日(周六周日)天数


下一篇:iOS 计算两个日期之间的天数问题