[R32A]染色游戏
- 难度 入门
- 时限 1s
- 空限 512m
- 模拟
数据规模:,。
思路
两次染色得到的是两个区间 和 ,被染黑的格子总数即这两个区间的并集大小。由容斥原理:
两个区间的交集为 。若 ,重叠长度为 ;否则两区间不相交,重叠长度为 。
复杂度
时间 ,空间 。
仓颉实现
import std.console.*
import std.convert.*
main(): Int64 {
let reader = Console.stdIn
let parts = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p: String => Int64.parse(p) })
let (l1, r1, l2, r2) = (parts[0], parts[1], parts[2], parts[3])
let len1 = r1 - l1 + 1
let len2 = r2 - l2 + 1
let hi = if (r1 < r2) { r1 } else { r2 }
let lo = if (l1 > l2) { l1 } else { l2 }
var overlap = hi - lo + 1
if (overlap < 0) {
overlap = 0
}
let ans = len1 + len2 - overlap
println(ans)
return 0
}