【Python】 yukicoderで覚えた事1
とりあえず、yukicoderで覚えた事を忘れずにメモ。
メモなので他の人はわかりにくいかも。
■アルゴリズム
・幅優先探索
・深さ優先探索
・しゃくとり法
■工夫
Pythonの場合、優先度queueには
heapqを使用するのが良いけど、
優先度が1つだけでなく2つ以上の場合
が、これだとループ回数が多いと遅すぎてTLEになることがある。。
※どうやらオブジェクト生成にかかっているらしい
ので、bitの割付位置を変更してプリミティブな形で突っ込むように工夫する。
---
とりあえず、問題の意図を理解して
如何に覚えたアルゴリズムのパーツを問題に当てはめれるか。
問題をたくさん解くしかない。。。
メモなので他の人はわかりにくいかも。
■アルゴリズム
・幅優先探索
・深さ優先探索
・しゃくとり法
■工夫
Pythonの場合、優先度queueには
heapqを使用するのが良いけど、
優先度が1つだけでなく2つ以上の場合
list = []てな感じにする。
heapq.heappush(list , [1, 2])
heapq.heappop(list)
が、これだとループ回数が多いと遅すぎてTLEになることがある。。
※どうやらオブジェクト生成にかかっているらしい
ので、bitの割付位置を変更してプリミティブな形で突っ込むように工夫する。
heapq.heappush(list , (1 << 4) + 2) # 0x12てな感じにして、値を出し入れするとループ回数が増えても生成時間が削れて一気に時間短縮する。
t = heapq.heappop(list)
a = t & 0x0F # 2
b = t >> 4 # 1
---
とりあえず、問題の意図を理解して
如何に覚えたアルゴリズムのパーツを問題に当てはめれるか。
問題をたくさん解くしかない。。。