ABC63のD問題について
今回も今更感満載ですが復習として書きます。
ABCのCまで早解きできてある程度いい成績がとれたのではとか思っています。
Dは最後まで解くことができず、無理やりな法則立ててました。
考察してから、解かないと(これ前も言ってた)
では本題に入ります
問題、自分の解答
WA解答
Submission #1335627 - AtCoder Beginner Contest 063 | AtCoder
AC解答
Submission #1335839 - AtCoder Beginner Contest 063 | AtCoder
解き方
まず、a=a-bをしましょう(すべての要素からbをひき、中心となるやつにはa-bを引けばよくなるから)
それで、n回攻撃するとし、すべての要素からbを引きます
各要素からaを何回引く必要があるのか計算します
それがn回以下ならおけ、大きければ足りないのでダメという感じで
答えをkotaeと置くと、kotae以上の回数行ったらそれはおけで、未満ならたりません
あれ、これってある地点が境になっていません??
にぶたんです、にぶたん(使ったことないとかナイショ)
自分がWA解答で間違えたところ
b*nを何回も引いてしまいました。。。
あと、掛け算するときに、オーバーフローする可能性があるという事を記憶しておきます。
もうlong longですべて済ませた方がいいのかもしれない
出力するのはokの値でした。。すみません
27行目のhp[i]>0が真だったときにhp[i]から複数回b*countが引かれてしまうところ、出力する結果はok、bが大きいときにb*countがオーバーフローするの3点だと思いますーhttps://t.co/0ABxRqhAus
— フェリン (@ferin_tech15) 2017年6月7日
フェリンさん、有難うございます!
Tips
にぶたんのチェックのところは別の関数で作った方がいい、確かにきれいで見やすくなります。
にぶたんはチェック関数を別にするとコードの見通しが良くなります。参考までに。
— やみとも (@wabisuke2718) 2017年6月7日
やみともさんも有難うございます!
二分探索の方法
【めぐるのアルゴリズム講座】
— 因幡めぐる@競技プログラミング (@meguru_comp) 2016年2月9日
二分探索(整数)の書き方
難しさ:4 pic.twitter.com/LGLbkS0D7l
この方法神ですね、はい
まとめ
実装にいろいろ戸惑ったのが今回の反省点ですが、学ぶことも多かったので、ま、多少はね?という感じです