結果
問題 | No.3 ビットすごろく |
ユーザー | sewoiwataki |
提出日時 | 2018-02-16 12:42:12 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 993 bytes |
コンパイル時間 | 627 ms |
コンパイル使用メモリ | 64,716 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-01 08:53:59 |
合計ジャッジ時間 | 1,485 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 33 |
ソースコード
#include<iostream> #include<queue> //#define DEBUG #define NMAX 10000 using namespace std; int main(){ int N; int min[NMAX+1]; queue<int> que; cin>>N; for(int i=1;i<=N;i++){ min[i]=-1; } que.push(1); min[1]=1; while(!que.empty()){ int bitn; int p=que.front(); #ifdef DEBUG for(int i=1;i<=N;i++){ cout<<min[i]<<","; } cout<<endl; #endif que.pop(); bitn=0; for(int i=0;(p>>i)!=0;i++){ if((p>>i)&1==1) bitn++; #ifdef DEBUG cout<<p<<","<<(p>>i)<<endl; #endif } if(p-bitn>=1&&(min[p-bitn]==-1||min[p-bitn]>min[p]+1)){ min[p-bitn]=min[p]+1; que.push(p-bitn); } if(p+bitn<=N&&(min[p+bitn]==-1||min[p+bitn]>min[p]+1)){ min[p+bitn]=min[p]+1; que.push(p+bitn); } } cout<<min[N]<<endl; }