結果
| 問題 |
No.3 ビットすごろく
|
| ユーザー |
|
| 提出日時 | 2017-02-19 12:58:44 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,195 bytes |
| コンパイル時間 | 220 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 155,308 KB |
| 最終ジャッジ日時 | 2024-12-30 04:46:15 |
| 合計ジャッジ時間 | 181,533 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 6 TLE * 27 |
ソースコード
import re
from scipy import integrate
from operator import itemgetter
from collections import defaultdict as dd
from collections import Counter
from collections import deque
import numpy as np
import fractions
import itertools
import math
from copy import deepcopy as dcopy
import heapq
from heapq import heappop, heappush, heapify
N = int(input())
# N = 5
stack = []
heappush(stack, (1, 0, [True]+[False]*(N-1), "1")) # count, position, arrived, root
flag = False
while len(stack) != 0:
count, position, arrived, root = heappop(stack)
number = position + 1
if number == N:
print(count)
flag = True
break
move_size = bin(number).count("1")
for move in (move_size, - move_size):
new_position = position + move
new_count = count + 1
new_arrived = dcopy(arrived)
new_root = root + str(new_position + 1)
if not (0 <= new_position <= N-1):
pass
elif new_arrived[new_position]:
pass
else:
new_arrived[new_position] = True
# print(new_root)
heappush(stack, (new_count, new_position, new_arrived, new_root))
if not flag:
print(-1)