12月14日
まえがき
昨日は虚無!!
- 解いた問題
- ARC054 A- 動く歩道
- ARC051 A- 塗り絵
解法
int main() { cout << setprecision(10); int l , x, y, s ,d; cin >> l >> x >> y >> s >> d; int dist ,rdist; if(s < d){ dist = d- s; rdist = s + l - d; }else { dist = l -s + d; rdist = s -d ; } double a ,b ; a = dist*1. / ( x + y); b = rdist*1. / ( y - x ); double ans = min(a,b); if(a < 0) ans = b ; if( b < 0 ) ans = a; cout << ans <<endl; }
こんな図を書きました(円じゃなくて線でみた)
高橋くんが歩く速さは、右向きを正方向として、 x + y か、 y - x ;
時計回りで歩くか、半時計回りで歩くかで距離が変わるので、その距離を求めた。
そうすればあとは、時間 = 距離 / 速さ を用いる。 ただ、y > xのとき、速さが負になって、明らかに時計回りに進んだほうがいいので、(時間も負の値になる) その時は、もう片方をansにする。ってしました。
if ( a < 0 ) ans = b;はなくても通りそう
ARC051 A- 塗り絵
解法
難しくないですか?
2時間ぐらいダラダラと考察してやっと通せました。
とりあえず円の左端、右端とx2,x3に着目して考えました。
が、僕には解法を書くだけの脳がないので頑張って条件分岐して解いたとしかいえません。