バイトの競プロメモ

主に競技プログラミング

A - 迷子の高橋君 / Takahashi is Missing!

https://atcoder.jp/contests/cf16-tournament-round2-open/tasks/asaporo_e

 

解法

距離が1の時以外は右に移動したほうがいい

 

En = p * (En-2) + (1-p) * (En) + 1

En = En-2 + 1 / p

よって

E(2n+1) = E1 + (1/p)*n

E(2n+2) = E2 + (1/p)*n

 

また、E1,E2は1/pとなる(高橋君が左に移動すればいいため)

 

https://atcoder.jp/contests/cf16-tournament-round2-open/submissions/4682174

 


void solve() {
din(x, pp);
dou p = pp * 1.0 / 100;
dou e1 = 1 / p;
dou e2 = 1 / p;
if (x % 2 == 1) {
cout << e1 + (1 / p) * (x / 2) << endl;
} else {
cout << e2 + (1 / p) * ((x / 2) - 1) << endl;
}

}