YukicoderContest289 E問題P3 「Archaea」
https://yukicoder.me/problems/no/1465
https://gyazo.com/83df7a2ec990e4b4f64f261c77fc730d
問題概要
制約
$ N ,K \leq 2 \times 10^5
解法・お気持ち
グラフの問題に帰結して考えることができます.
まず,数を増やしていくのではなく$ N個の状態から減らしていくという逆から考えるをします.
$ Nが2の倍数であれば,$ N / 2にできます.
また,必ず$ N - 3の演算を行うことができます.
すると,$ Nから$ 1の頂点へ向かうDAGとして捉えることができます.
https://gyazo.com/2bde94ae635233b8783071bfb461b49c
よって,頂点$ NからBFSをすればよいです.
再帰DPとかでも計算できると思います.
計算量
$ O(N)
新たな学び
反省点
コード
code: cpp
constexpr int INF = 1e7;
int main() {
int N, K;
cin >> N >> K;
vector<int> dp(N + 1, INF);
queue<int> Q;
Q.push(N);
dpN = 0;
while (!Q.empty()) {
auto v = Q.front();
Q.pop();
if (v - 3 > 0 && dpv - 3 == INF) {
dpv - 3 = dpv + 1;
Q.push(v - 3);
}
if (v % 2 == 0 and dpv / 2 == INF) {
dpv / 2 = dpv + 1;
Q.push(v / 2);
}
}
if (dp1 <= K) YES();
else
NO();
}
#YukiCoder #solved #YukiCoder289 #YukiP3