タイトル
n個のバケツがあり、水を飲んでからm分後に豚が死亡するとします。p分で「有毒な」バケツを見つけるには何匹の豚(x)が必要ですか?n個のバケツに有毒バケツが1つだけあります。
アイデア:p <mの場合、明らかに解がないため、考慮されません。問題は、各子豚がp分でいくつの状態を監視するかにあり、k個の状態がある場合、対応するk-ary数を監視します。次に、問題はn個のk番号に必要な桁数の問題に変換されます。
- たとえば、 原因 、それから各ブタはついに3つの状況を持っています、生きている、第一段階で死ぬ、そして第二段階で死ぬ。現時点で必要 匹の子ぶた。
- それを達成する方法は?豚のために( )およびバケット( )は個別に番号が付けられています。 のバケット。次のように、k進数に分割します。 その際、ステージ2の子豚No.0に水bを給餌し、ステージ1の子豚No.2に水bを給餌し、それ以外の数の子豚には水bを給餌しません。他の番号付きバケットはそれに応じて処理されます。最後に、子ブタの生存と死の段階に応じて、有毒なバケツ(有毒なバケツは一意であるため)を判断できます。
class Solution {
public:
int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
int k = minutesToTest/minutesToDie+1;
int ans = ceil(log(buckets)/log(k));
return ans;
}
};