Official
B - 一本道の通行止め / Road Closure on a One-Way Street Editorial
by
B - 一本道の通行止め / Road Closure on a One-Way Street Editorial
by
physics0523
高橋君は地点 \(1\) から出発して地点 \(1,2,3,\dots\) の順にしか地点に到達できないため、明らかに以下の戦略が最適です。
- 許可証が \(1\) 枚以上残っている限り、 \(i=2,3,\dots,N\) について、以下を繰り返す。
- 地点 \(i-1\) から地点 \(i\) への道が通行止めであれば、そこに許可証を \(1\) 枚利用する。
解除しきれなかった通行止めのうち最も番号の若いものが地点 \(k,k+1\) 間であるとき、答えは \(k\) です。
\(M\) 枚以下の許可証で全ての通行止めを解除できたとき、答えは \(N\) です。
実装例 (C++):
#include<bits/stdc++.h>
using namespace std;
int main(){
int N,M;
cin >> N >> M;
vector<int> W(N+1,0);
for(int i=1;i<N;i++){
cin >> W[i];
if(W[i]==1 && M>0){
M--;
W[i]=0;
}
}
W[N]=1;
for(int i=1;;i++){
if(W[i]>0){
cout << i << "\n";
return 0;
}
}
return 0;
}
posted:
last update:
