トップページ > ヒッキー > 2017年03月20日 > fa3SQn4u0

書き込み順位&時間帯一覧

65 位/345 ID中時間01234567891011121314151617181920212223Total
書き込み数0100000000000001000011004



使用した名前一覧書き込んだスレッド一覧
(-_-)さん
ヒッキーのプログラミングするスレ 9 (旧 プログラミング雑談 in HIKIKO) [無断転載禁止]©2ch.net

書き込みレス一覧

ヒッキーのプログラミングするスレ 9 (旧 プログラミング雑談 in HIKIKO) [無断転載禁止]©2ch.net
157 :(-_-)さん[sage]:2017/03/20(月) 01:21:47.88 ID:fa3SQn4u0
http://codeforces.com/blog/entry/50996
Cが微妙に良くわからん

二分探索で
if (mid == x) {
  break;
} else if (mid > x) {
  right = mid - 1;
} else {
  left = mid + 1;
}
じゃダメな時があるけどどういう時なん?
ヒッキーのプログラミングするスレ 9 (旧 プログラミング雑談 in HIKIKO) [無断転載禁止]©2ch.net
177 :(-_-)さん[sage]:2017/03/20(月) 15:09:45.18 ID:fa3SQn4u0
>>165
q = n - k*(k+1)/2だとして、 (k>=0, k=0のときq>m)
q <= m を満たすkの最小値を求めたいから
if (q > m) {
  left = mid + 1;
} else {
  right = mid;
}
になるのかな

逆に最大値を求めたいとなったら
if (!条件) {
  right = mid - 1;
} else {
  left = mid;
}
になる?
ヒッキーのプログラミングするスレ 9 (旧 プログラミング雑談 in HIKIKO) [無断転載禁止]©2ch.net
183 :(-_-)さん[sage]:2017/03/20(月) 20:51:14.54 ID:fa3SQn4u0
>>182
なるほどありがとう!
ヒッキーのプログラミングするスレ 9 (旧 プログラミング雑談 in HIKIKO) [無断転載禁止]©2ch.net
186 :(-_-)さん[sage]:2017/03/20(月) 21:45:44.34 ID:fa3SQn4u0
>>185
>>182が正解だと思う
符号が違うとmid = left + (right - left) / 2 のとき切り下げが起こるから
if(q > m)でleft = mid+1が必要になる

逆に切り上げにしたらif(q < m)でright = mid - 1にするんだと思う


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。