食通
このデータ範囲は、この問題が行列の高速累乗を必要とすることを示しています。
最初にk = 0 k = 0を考えますk=0。各ポイントを5つのポイントに分割すると、エッジの重みはすべて1になります11、それからフロイドが最長の道を見つける。転送は一般化された行列の乗算であり、これは連想則を満たし、行列の高速パワーに適用できます。
k≠0 k \ neq 0 k=0診察室での練習のほうが激しいので、直接フードフェスティバルの時間を並べて、セクションごとに暴力を求めます。時間の複雑さはO(125×n 3×k logT)O(125 \ times n ^ 3 \ times k \ log T)O (1 2 5×ん3×klo gT )、出発まで55分。
行列の乗算は、1から1であるため、応答行列に遷移行列を乗算したものです。1が始まるので、回答マトリックスには最初の行のみが必要です。時間の複雑さはO(25×n 2×k logT)O(25 \ times n ^ 2 \ times k \ log T)です。O (2 5×ん2×klo gT )。
料理を作る
n − 2≤mn-2 \ leq mが見つかりませんでしたん−2≤mの性質として、ネットワークフローについて考え、ゼロにバーストします。
トピックに戻ると、このプロパティは、この質問がネットワークフローではないことを示しています。次に、部品はn − 1≤mn-1 \ leq mに分割されますん−1≤m、次にn − 1 = m n-1 = mと考えるん−1=mの構成方法。
最小および最大のddd最小のddを取り出して料理を作るdは使い果たされ、次に最大の残りのddd投げて戻します。これは、問題の規模を小さくすることと同じです。この構造が正しいことがわかります。バランスの取れたツリーまたはセットを使用して、それを維持します。
以下のためのn≤MN \当量メートルん≤m、毎回最大のddを選択できますd調理し、n − 1≤mn-1 \ leq mになるまで投げ返すん−1≤m。
以下のためのM = N - 2 M = N-2メートル=ん−2. nnの変更を検討する2つのセットの合計がkkの場合、 n個の原材料は2つの再セットに分割されます。kの場合、2つのm = n − 1 m = n-1に分割することと同じです。メートル=ん−1つの状況。これは典型的な01存在のバックパックで、複雑さはO(n 2 k)O(n ^ 2k)です。O (n2 k)。状態は01だけなので、ビットセットで最適化でき、時間の複雑さはO(n 2 k 64)O(\ frac {n ^ 2k} {64})です。O (6 4ん2 K)。