結果
問題 | No.3 ビットすごろく |
ユーザー |
|
提出日時 | 2020-05-30 19:10:30 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,543 bytes |
コンパイル時間 | 893 ms |
コンパイル使用メモリ | 100,780 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-01 09:49:41 |
合計ジャッジ時間 | 1,882 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 33 |
ソースコード
#include <iostream>#include <iomanip>#include <cstdio>#include <queue>#include <cstring>#include <vector>#include <map>#include <algorithm>#include <cctype>#include <cmath>#include <bitset>#include <set>#include <stack>using namespace std;#define REP(i,n) for(int i=0;i<(int)(n);i++)#define RREP(i,n) for(int i=n-1;i>=0;i--)#define FOR(i,k,n) for(int i=(k);i<(int)(n);i++)#define all(i,n) (i),(i+n)int dx4[4]={1,0,-1,0};int dy4[4]={0,-1,0,1};int dx8[8]={1,0,-1,1,-1,1,0,-1};int dy8[8]={1,1,1,0,0,-1,-1,-1};int dx9[9]={0,1,0,-1,1,-1,1,0,-1};int dy9[9]={0,1,1,1,0,0,-1,-1,-1};typedef pair<int, int> P;typedef pair<string, int> SP;typedef long long ll;typedef pair<ll, ll> PLL;const int INF = 1e9;const ll LLINF = 1e18;const int MAX_V = 1e6+1;const ll mod = 1000000007;// --------------------------------------int n;int bit_counter(int m) {int count = 0;while(m > 0) {if(m & 1) count++;m >>= 1;}return count;}int main() {cin.tie(0);ios::sync_with_stdio(false);cin >> n;vector<int> a(n + 1, -1);queue<P> que;que.push(P(1, 1));a[1] = 1;while(!que.empty()) {P p = que.front(); que.pop();int b_c = bit_counter(p.first);if(p.first - b_c > 0 && a[p.first - b_c] == -1) {a[p.first - b_c] = p.second + 1;que.push(P(p.first - b_c, p.second + 1));}if(p.first + b_c <= n && a[p.first + b_c] == -1) {a[p.first + b_c] = p.second + 1;que.push(P(p.first + b_c, p.second + 1));}}cout << a[n] << endl;}