ganmo::cout

競技プログラミング始めました

AtCoder Beginner Contest 125

C問題が難しかったみたいですね
D問題は色々解法があったみたいです

A - Biscuit Generator (100点)

問題: A - Biscuit Generator
Aが整数なので、ちょうどT秒後までビスケットが生産されうる。したがって最終的に生産されるビスケットは\lfloor \frac{A}{T} \rfloor \times B個。これを出力するとAC。O(1)

拙解 (C++14): Submission #5138709 - AtCoder Beginner Contest 125

B - Resale (200点)

問題: B - Resale
いくつでも持っていっていいので、タイトルの「Resale」=「転売」のとおりに純額V_i - C_iが正のものをすべて足した合計を出力してAC。

拙解 (C++14): Submission #5140438 - AtCoder Beginner Contest 125

C - GCD on Blackboard (300点)

問題: C - GCD on Blackboard
A_iを書き換えるとすると、それ以外のすべてのA_j (j\ne i)のGCDの倍数を書き込めばもっとも最大公約数が大きくなる。よって、高速化のため左右から累積GCDを求めておいてその項以外のGCDで最も大きいものを出力してAC。O(N\log \max\{A_i\})

拙解 (C++14): Submission #5143489 - AtCoder Beginner Contest 125

D - Flipping Signs (400点)

問題: D - Flipping Signs
左から順に見ていって、負の項に出会ったときにめくって正の項にすれば、確実に最後の1項以外は正にできる。最後の1項が負になった場合でもめくっていけば任意の1項だけを負にすることができる。よって、実際に順番にめくっていって最後の1項も正になったら\sum_{i=1}^{N} |A_i|、1項負の項が余ったら\sum_{i=1}^{N} |A_i|-2\min_i\{|A_i|\}を出力すればAC。O(N)

拙解 (C++14): Submission #5146309 - AtCoder Beginner Contest 125

まとめ

またしてもABC早解きができて47位でした
ABC早解きだけは得意*1でも水色に上がったからには500点以上をがんばっていきたい