結果
問題 | No.3 ビットすごろく |
ユーザー |
|
提出日時 | 2023-01-26 22:09:11 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 4 ms / 5,000 ms |
コード長 | 711 bytes |
コンパイル時間 | 1,943 ms |
コンパイル使用メモリ | 205,812 KB |
最終ジャッジ日時 | 2025-02-10 07:06:12 |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 33 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; vector<int> cnt(n+1,-1); cnt[1]=1; map<int,int> bits; for(int i=1; i<=n; i++){ bitset<32> bs(i); bits[i] = bs.count(); } queue<int> q; q.push(1); while(!q.empty()){ int x=q.front(); q.pop(); if(x==n) break; int prev = x-bits[x]; if(prev>=1 && cnt[prev]==-1){ cnt[prev] = cnt[x]+1; q.push(prev); } int next = x+bits[x]; if(next<=n && cnt[next]==-1){ cnt[next] = cnt[x]+1; q.push(x+bits[x]); } } cout << cnt[n] << endl; return 0; }