このとき、あるxが数列Aの異なる要素の和で構成することができるか?できる場合は、使った要素のインデックスを答えよ。解法A[i]は、10^18以下のものを列挙しても、100個以下なので、列挙しておく。2以上の数を順番に計算してみる。すると、図のような3パターンがありそうだということが見えてくる。x=A[i]+αのとき→A[i]を使って、αをA[1]からA[i-2]で適当に作るこれが正しいことは、数学的帰納法で証明できる。xとA[i]の差が1のときは、x-=A[i-1]としてi-1を答えに加え、それ以外はx-=A[i]としてiを答えに加える。貪欲でダメだったので、ビットをうまく立てる、みたいなことを考えてたけど解けなかった1が作れない、みたいなことに気がつければ解けた?(今回は適当な数字ばかり例に出して考えていたけど、小さい方から順に試してみる方法は、確実に頭に入れておく必要がある(これはコーナーケースの注意にもなるので))*1:今回は2人だけだった。(1)はてなブログをはじめよう!n_knuuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。