AtCoder 600点

AtCoder ABC #139 F - Engines

問題 F - Engines 解説 公式解説結構長めに書いてあるけど実装としては f64.atan2()で角度を求めてソート 連続的に取りうる組み合わせを全て試す これで で解ける fn solve(xys: Vec<(i64, i64)>) -> f64 { let n = xys.len(); let mut xys = xys; xys.sort_…

AtCoder ABC #136 F - Enclosed Points

F - Enclosed Points 問題 TODO BIT 解説の前に今回のBITの使いどころについて軽く整理。 いまx座標で昇順に並べた点(例: ) があるとする。 BITを利用すると各点を原点として特定の象限に含まれる点の数を順に求めることができる。 例えば第3象限の場合は以…

AtCoder ABC #132 F - Small Products

F - Small Products 問題 正の整数K個を一列に並べたものであって、隣接して並んでいるどの2つの整数の積もN以下であるものの個数を109+7で割った余りを求めてください。 解説 公式解説にあるようにxが最後の整数となるようなi個の整数を並べて条件を満たす…

AtCoder ABC #131 F - Must Be Rectangular!

AtCoder Beginner Contest 131 - AtCoder 反省 UnionFind木使うとかどうやったら思いつくんですかね…。 解説 参考: AtCoder ABC 131 F - Must Be Rectangular! (600 点) - けんちょんの競プロ精進記録 fn solve(xys: &[(usize, usize)]) -> usize { let n = …