水面下の夢

競プロやイラストに興味があります.メインブログがここ.ソシャゲの話はこっち(http://ameblo.jp/0n0-yumechi/).ブログアイコンはYaQ(@8_9_00)さんから.

No.306 さいたま2008

回答

#61462 No.306 さいたま2008 - yukicoder

二分探索しようとして失敗した.
解説を見て,あー…(思考停止)ってなった.

なんというか,普通に高校数学とかを知っていれば解ける問題です.
AとBの座標が与えられるので,片方を反転して,AとBの直線を求め,y軸との切片を考えれば良いという….

高校の時に定期テストで解いたじゃんこういう問題orz

int main(){
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout.precision(16);

  int x1, y1;
  int x2, y2;

  cin >> x1 >> y1;
  cin >> x2 >> y2;
  x2 = -x2;

  // y - y1 = ((y2 - y1) / (x2 - x1)) * (x - x1)
  // y = ((y2 - y1) / (x2 - x1)) * (x - x1) + y1
  // need intercept -> ((y2 - y1) / (x2 - x1)) * (-x1) + y1
  cout << ((double)(y2 - y1) / (x2 - x1)) * (-x1) + y1 << endl;

  return 0;
}

単純だけど,頭が働くかどうかが試された感じがしました.
幾何やこの類の平面グラフとか,そもそもの性質を忘れている場合が多いので,時間を見つけて高校数学,大学数学からやり直してこようかしら…