G - Segment Sum Constraints Editorial
by
kyopro_friends
矛盾判定パートについて
矛盾判定はポテンシャル付きDSUを使うことでサボることができます。
疑似コード
// dsu.merge(i, j, x) で iからjへのポテンシャルの差を x とする。既存の情報と矛盾していたら False を返す
// dsu.diff(i, j) で iからjへのポテンシャルの差を返す
// その他はatcoder::dsuと同じ
// 適当な変換により、正整数列ではなく非負整数列を求める問題に変換済みとする
d <- dsu(N+1)
for i in 0..M:
if d.merge(L[i]-1,R[i],S[i]) is False:
ans_is_zero()
for i in 0..N+1:
for j in i+1..N+1:
for ii in i..j+1:
for jj in ii..j+1:
if d.same(i,j) and d.same(ii,jj) and d.diff(i,j)<d.diff(ii,jj):
ans_is_zero()
if min(L)!=1 or max(R)!=N:
ans_is_infinity()
// ここに到達した場合、答えは0でもinfinityでもない
posted:
last update:
