A問題の座標の求め方
AtCoder Beginner Contest 246
A問題 4ポインツ
問題文
XY平面上に長方形があります。
この長方形の各辺はX軸またはY軸に平行であり、面積は0ではありません。
この長方形の4つの頂点のうち、異なる3つの頂点の座標
X1、Y1、X2、Y2、X3、Y3が与えられるので、残る1つの頂点の座標を求めてください。
えー、どこやるんだっけなー、これ。
3点か分かってるので、あと1点探してくださいですよね。
ときあえず、
X1、Y1、マップのインとインプットとスプリットが3つあります。
X、Yを2と3にそれぞれ変えていきます。
入力例を入れておいて、
ちょっと数学だと思うので調べてみましょうか。
四角形座標3点。
A-B≡D-C
4点から領域を得る。
はいはいはい。
2点DのX座標を求めなさい。
ちょいちょいやりますね。
ちょいちょいやりますが、
なんだろう、この問題の答えはどうですかっていうやり方でのページばっかりが出てあった。
ここでは正方四辺形を作るとき、4つの頂点のうち3つは基地で、残りの頂点の座標を考えます。
これこれ。
3つの座標があらかじめ与えられている。
平行四辺形ではないよね。
長方形。
長方形と平行四辺形だとまた違うのかな。
長方形で調べてみましょうか。
長方形座標。
3点から長方形を作りたい。
プログラムベクトルで考える。
ちょっと違うな。
長方形の重心位置。
違うね。
長方形の重心位置はいらないんだよな。
4点から領域を作る。
点の座標。
1回ちょっと入力例を見てみますか。
入力例が-1,-1。
2が-1,2。
3つ目が3,2。
-1,-1。
xが-1だから上か。-1,2。
3つ目が3,2だから右上ですね。
右下に行くやつ。
3とマイナス。
えーっと。
そんなあれか。考えなくてよかったな。
つまりダブってないやつってことですね。
あーなるほど。
もっと気楽に考えてよかったんだ。
どうしようかな。
このままもう書くか。
x4イコールイフ。
イフ分で全部やっちゃおう。
x1イコールイコールx2だったら
x4はx3です。
ルイフ。
いやエルスか。エルスでいいや。
エルスx4イコール。
3種類あるのか。
ルイフx2イコールイコールx3だったら
x4はx1と一緒。
そのどちらでもなければ
エルスx4はx2と一緒。
っていうのをyも作って
最後にxyをプリントすればいいですね。
絶対もっといいやり方があるけど
調べるのに時間がかかっちゃったんで
物理で殴っていきます。
xをyに置き換えて
プリント
x4y4でいいんじゃない。
3-1
-20-40が出たら2個目の入力例もOK。
OKですね。提出していきます。
B問題の座標の求め方
ACしたのでB問題いきます。
ゲットクローザー
問題文
2次元平面上の点00から点ABに向かって
距離1だけ移動します。
移動後の座標を求めてください。
ただし点xから点yに向かって距離d
小なリコール1000分xyの長さだけ移動すると
1000分xy上で点xからの距離が
dであるような点にたどり着くものとします。
なお制約より点00と点ABの距離は
1以上であることが保証されます。
移動後の点をxyとするとき
xとyをこの順に空白区切りで出力して
想定回帯の絶対誤差または相対誤差が
10-60以下であれば正解として扱われる。
入力例は34
点34に向かって距離1だけ移動します。
これはガチで数学じゃない?
34 1000分距離1だけ移動します。
点xから点yに向かって移動すると
1000分xy上で点xからの距離が
dであるような点に
はいはいはいだから
生成数の場所にはいかないかもしれないよ
えーっと
なんて調べたらいいのこれ
2次元平面上の座標
2次元平面移動座標
2次元平面上座標変換
座標移動にしましょうか
座標移動
原点を中心に回転移動した座標
座標移動ない
調べ方が悪い
座標回転移動後の座標
回転行列を使う方法絶対いらない
b問題だし
入力例1が34で出力例が
0.6と0.8なんですよね
倍?10分の倍数?
10だったら1.0000と
0.0000000
.abに到着する場合もあります
うん
どっちかが0だったら
直線移動なので
そのまま行けますよってことですね
とりあえず
aとbを
マップとインプット
とスプリット
今回の問題ちょっと苦手な
カテゴリーですね特に
10だったら
10が出てくる
入力例3は246と402
移動後の座標を求めてください
2次元平面上の点Eから
2点を通る直線の式を一発で出せる公式
2点間の距離
あ、2点間の距離の公式
中算数学?
中算数学で詰まってんの
1000分ab
あったなこんな
√x2-x1の事情
プラスy2-y1の事情
うん
これ昔
教プロやってた時も
しょっちゅう積んでたんですけどね
一生覚えらんないなこれ
で、x1y1が0だから
aの事情プラス
bの事情の√でいいのかなこれ
プリント
a××2
出す
b××2の
××0.5が確か
√になるはず
コードテストを出すと
5.0
あれそうだ座標を出さないといけないんだけど
そうだabの距離
距離
じゃないんだよな
距離じゃなくて
座標を
出したいが
平面上の点の位置を表すには
答えを見ますか
答えというか解説を見ます
ちんぷんかんぷんです
b問題
あれ出てきた
点00と点abの距離をdとすると
d分のa d分のbが答えです
へー
ここで
dイコール
a事情プラスb事情の√です
はぁはぁじゃあ途中までは行けたんだ
今出た距離
5っていうのを
abそれぞれを割ったら
いいのか
なので
さっきのa事情
プラスb事情の√っていうのを
d変数に入れておいて
プリント
a割るdと
b割るd
でいけるって言ってる
0.6 0.8
1回ちょっと提出してみましょうかこれで
b問題どこだ
距離
距離分の
座標なんだ
あーacしましたねなるほどなるほど
また一つ賢くなりましたね
解法に変格を求めて解く
あーコサインサインも使うことができると
okです
ちょっと次回は
また同じような問題が出たときはスルッと解けるようになれればと思います
ではまた次回お疲れ様です