結果
| 問題 |
No.3 ビットすごろく
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-02-21 01:06:57 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 836 bytes |
| コンパイル時間 | 2,260 ms |
| コンパイル使用メモリ | 182,016 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-09-18 23:50:40 |
| 合計ジャッジ時間 | 3,150 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 23 WA * 10 |
ソースコード
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
int dp[10001];
int main(void)
{
cin.tie(0);
ios::sync_with_stdio(false);
int N;
cin >> N;
fill(dp,dp+10001,1e9);
dp[1] = 1;
priority_queue <pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pque;
pque.push(make_pair(dp[1],1));
while(!pque.empty())
{
int now = pque.top().second;
pque.pop();
int cnt = 0;
int val = now;
while(val > 0)
{
if(val%2==1)
{
cnt++;
}
val/=2;
}
if(now-cnt>0)
{
if(dp[now-cnt] > dp[now] + 1)
{
dp[now-cnt] = dp[now] + 1;
pque.push(make_pair(dp[now-cnt],now-cnt));
}
}
if(now+cnt<=N)
{
if(dp[now+cnt] > dp[now] + 1)
{
dp[now+cnt] = dp[now] + 1;
pque.push(make_pair(dp[now+cnt],now+cnt));
}
}
}
cout << dp[N] << '\n';
return 0;
}