Official
B - バスの到着時刻 / Bus Arrival Time Editorial
by
B - バスの到着時刻 / Bus Arrival Time Editorial
by
physics0523
路線 \(i\) について、時刻 \(T\) 以降で最初に到着するバスの到着時刻は以下の式で表現できます。
- \(\displaystyle \left \lceil \frac{T}{A_i} \right \rceil \times A_i\) (ただし、 \(\lceil x \rceil\) で \(x\) の小数点以下切り上げ)
理由:
求めるバスの到着時刻は \(kA_i \ge T\) なる最小の非負整数 \(k\) を用いて \(kA_i\) と表現されます。 \(k \ge \frac{T}{A_i}\) なる最小の非負整数は \(\lceil \frac{T}{A_i} \rceil\) であり、到着時刻は \(\lceil \frac{T}{A_i} \rceil \times A_i\) です。
整数 \(p \ge 0, q>0\) について、 \(\lceil \frac{p}{q} \rceil\) は \(\lfloor \frac{p+q-1}{q} \rfloor\) と等しく、この形の方が実装に落とし込みやすいです。 参考記事
これを全ての路線について求め、最小値を取ることでこの問題に正答できます。
実装例 (C++):
#include<bits/stdc++.h>
using namespace std;
int main(){
int N,T;
cin >> N >> T;
int res=2.1e9;
for(int i=0;i<N;i++){
int A;
cin >> A;
res=min(res,((T+A-1)/A)*A);
}
cout << res << "\n";
return 0;
}
posted:
last update:
