F - Spices Editorial by Mitsubachi
公式解説の方針において、 \(S\) の要素から辛さ \(p_i\) を作れるかを判定するパートがあり、この周辺についての別解を紹介します。
\(S\) の要素から辛さ \(p_i\) を作れる必要十分条件は \(S\) について基底を取った際、それらのxorを組み合わせて \(p_i\) が得られることです。この判定は \(S\) の基底をbasesとして以下のような疑似コードで行えます。
def can_make(n):
now = n
for base in bases:
now = min(now, now ^ base)
if now == 0:
return True
else:
bases.append(now)
return False
\(S\) の基底は最初は空集合として、上の疑似コード(の10行目の部分)においてelseに分岐した際にbasesにnowを入れることで管理できます。
posted:
last update: