注意事項
本記事は復習のための日記的なものであり、丁寧な解説を求めている方には不十分かと思われますので、ご了承のほどお願いいたします。
正解済み問題
B - Who is missing?
問題文
こちら問題ページ
解答
最初は普通に数が足りない値を全探索してTLEになってました。
元の数列の合計と引かれた数列の合計の差分を見れば、簡単に答えが出るので、その方法で正解。
let N = Int(readLine()!)!
let aArray = readLine()!.split(separator: " ").map{Int($0)!}
let total = Set(aArray).reduce(0, +) * 4
let sum = aArray.reduce(0, +)
print(total - sum)
誤答及び、未解答問題
C - Triangle?
問題文
こちら問題ページ
正答
この問題を特には三角形の面積を求める公式を知っている必要がある。
以下公式の解説の引用になります。
この公式を使って0かどうかを判断すればいいので、あとは判断する3つの座標をループ処理で順番に流せば答えがわかります。
let N = Int(readLine()!)!
let points = (0..<N).map {_ in readLine()!.split(separator: " ").map {Int(String($0))!}}
func ok(_ x: [Int], _ y: [Int], _ z: [Int]) -> Bool {
return (y[0] - x[0])*(z[1] - x[1]) - (z[0] - x[0])*(y[1] - x[1]) != 0
}
var ans = 0
for i in 0..<N {
for j in (i + 1)..<N {
for k in (j + 1)..<N {
if ok(points[i], points[j], points[k]) {
ans += 1
}
}
}
}
print(ans)
参考