ymduu+2

初心を忘れないのでツンデレとPSPが今でも好き、技術メモとか制作物とかそういうの

AGC002 knot puzzle

https://atcoder.jp/contests/agc002/submissions/6740547

所感

AGC500も大した事ねえなガハハ(on 調子)

問題概要

N本のロープがあり、i番目のロープの長さはa_iである。
i番目のロープの右端とi+1番目のロープの左端が結ばれているとする。
長さL以上の繋がったロープのみ結び目をほどくことができるとき、すべての結び目をほどくことはできるか判定し、可能ならその手順を出力せよ。

取った方針

まず、ロープを結び目を含まないロープと結び目を一つ含む長さL以上のロープに分割できることが必要だと考える。(結び目を2つ以上含む場合、一つの結び目を解決した時点で長さがL未満になる可能性があるのでNG)
"結び目を一つ含む長さL以上のロープ" につながっている結び目のうち一番端のものは、ほどいても残るロープの長さがL未満になることはないので、ほどくことができる。
よって、"長さの和がLを超える隣り合ったロープが存在する" という条件を満たせば可能で、"長さの和がLを超える隣り合ったロープ" 以外の結び目を端から順番に解いていけばよい。

正しい方針

同上

得られた知見

・構築->必要条件から攻める

解くのに必要な要素

・必要条件を列挙したらなんだかんだで十分だったというアレ

周辺調査によって得られた知見

特になし