ホームページ バックエンド開発 PHPチュートリアル 各店舗に流通する製品の最小化された最大数

各店舗に流通する製品の最小化された最大数

Nov 17, 2024 pm 04:59 PM

Minimized Maximum of Products Distributed to Any Store

2064年。各ストアに流通する製品の最大数を最小限に抑えます

難易度:

トピック: 配列、二分探索

n 個の専門小売店があることを示す整数 n が与えられます。さまざまな量の m 個の製品タイプがあり、これらは 0-indexed 整数配列数量として与えられます。ここで、quantity[i] は i 番目 の製品タイプの製品の数を表します。

次のルールに従って、すべての製品を小売店に配布する必要があります:

  • ストアは最大 1 種類の製品のみを提供できますが、任意の量を提供できます。
  • 配布後、各店舗にはある程度の数の商品 (おそらく 0 個) が与えられます。 x を任意の店舗に提供される製品の最大数を表すとします。 x をできるだけ小さくする必要があります。つまり、ストアに提供される製品の最大数を最小化したいとします。

可能な最小の x を返します。

例 1:

  • 入力: n = 6、数量 = [11,6]
  • 出力: 3
  • 説明: 最適な方法の 1 つは次のとおりです。
    • タイプ 0 の 11 個の製品は、次の数量で最初の 4 つの店舗に配布されます: 2、3、3、3
    • タイプ 1 の 6 つの製品は、他の 2 つの店舗に次の数量で分配されます: 3, 3
    • どのストアにも与えられる製品の最大数は max(2, 3, 3, 3, 3, 3) = 3 です。

例 2:

  • 入力: n = 7、数量 = [15,10,10]
  • 出力: 5
  • 説明: 最適な方法の 1 つは次のとおりです。
    • タイプ 0 の 15 個の製品は、最初の 3 つの店舗に次の数量で配布されます: 5、5、5
    • タイプ 1 の 10 個の製品は、次の数量で次の 2 つの店舗に配布されます: 5, 5
    • タイプ 2 の 10 個の製品は、最後の 2 つの店舗に次の数量で配布されます: 5, 5
    • どのストアにも与えられる製品の最大数は max(5, 5, 5, 5, 5, 5, 5) = 5 です。

例 3:

  • 入力: n = 1、数量 = [100000]
  • 出力: 100000
  • 説明: 唯一の最適な方法は次のとおりです。
    • タイプ 0 の 100,000 個の製品は唯一のストアに配布されます。
    • どのストアにも与えられる商品の最大数は max(100000) = 100000 です。

制約:

  • m == 量.長さ
  • 1 5
  • 1 5

ヒント:

  1. x がある数値より小さい場合には分配する方法がなく、x がその数値より小さくない場合には常に分配する方法があるという単調な性質が存在します。
  2. どの店舗にも与えられる製品の数が k を超えない番号 k が与えられた場合、すべての製品を配布できるかどうかを判断できますか?
  3. 関数 canDistribute(k) を実装します。この関数は、どのストアにも k 個を超える製品が提供されないようにすべての製品を配布できる場合は true を返し、それができない場合は false を返します。この関数を使用して、可能な最小の k を二分探索します。

解決策:

任意のストア (x) に割り当てられる製品の最大数について二分検索を使用できます。以下に段階的な説明と PHP ソリューションを示します:

アプローチ

  1. 二分探索セットアップ:

    • 下限 (左) を 1 に設定します (各ストアが少なくとも 1 つの製品を入手できるため)。
    • 上限 (右) を数量配列の最大数量として設定します (最悪の場合、1 つのストアが同じタイプのすべての製品を取得します)。
    • 私たちの目標は、x の値を最小化することです (あらゆる店舗に提供される最大の製品)。
  2. 二分探索ロジック:

    • 各中間点 x について、どの店舗にも x 個を超える製品が存在しないようにすべての製品を配布することが可能かどうかを確認します。
    • ヘルパー関数 canDistribute(x) を使用して、実現可能性を判断します。
  3. 実現可能性チェック (配布可能):

    • 各製品タイプの数量について、店舗ごとに x 製品を超えずにその製品タイプを流通させるために必要な最小店舗数を計算します。
    • すべての製品タイプに必要なストアを合計します。
    • 必要なストアの合計が n 以下の場合、ストアあたりの最大負荷を x として分散が可能です。そうでなければ、それは実現不可能です。
  4. 二分探索調整:

    • canDistribute(x) が true を返した場合、x は実行可能な解決策であることを意味しますが、x を最小化したいため、右側の境界を調整します。
    • false が返された場合は、x が小さすぎるため、左の境界を増やします。
  5. 結果:

    • 二分探索が完了すると、左に可能な最小の x が保持されます。

このソリューションを PHP で実装してみましょう: 2064。各ストアに配布される製品の最小化された最大数

<?php
/**
 * @param Integer $n
 * @param Integer[] $quantities
 * @return Integer
 */
function minimizedMaximum($n, $quantities) {    
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

/**
 * Helper function to check if we can distribute products with maximum `x` per store
 *
 * @param $x
 * @param $quantities
 * @param $n
 * @return bool
 */
function canDistribute($x, $quantities, $n) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Test cases
echo minimizedMaximum(6, [11, 6]); // Output: 3
echo minimizedMaximum(7, [15, 10, 10]); // Output: 5
echo minimizedMaximum(1, [100000]); // Output: 100000
?>
ログイン後にコピー

説明:

  1. canDistribute 関数:

    • 数量ごとに、数量を x で割ることによって必要な最小店舗数が計算されます (各店舗は整数の製品を取得できるため、切り上げには ceil を使用します)。
    • 累積必要ストア数が n を超える場合は false を返します。
  2. x の二分探索:

    • 二分探索では、実現可能な最小値に収束するまで x の範囲を繰り返し縮小します。
  3. 効率:

    • このソリューションは、二分探索が O(log(max_quantity) * m) で実行され、指定された制約内で実行可能なため、大きな入力サイズ (n と m が最大 10^5) に対して効率的です。

このアプローチでは x が最小限に抑えられ、商品が店舗全体にできるだけ均等に配置されます。

連絡先リンク

このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!

このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:

  • LinkedIn
  • GitHub

以上が各店舗に流通する製品の最小化された最大数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのさまざまなエラータイプを説明します(通知、警告、致命的なエラー、解析エラー)。 PHPのさまざまなエラータイプを説明します(通知、警告、致命的なエラー、解析エラー)。 Apr 08, 2025 am 12:03 AM

PHPには4つの主要なエラータイプがあります。1。notice:わずかなものは、未定義の変数へのアクセスなど、プログラムを中断しません。 2。警告:通知よりも深刻で、ファイルを含むなど、プログラムを終了しません。 3。ファタラー:最も深刻なのは、機能を呼び出すなど、プログラムを終了します。 4。ParseError:構文エラーは、エンドタグの追加を忘れるなど、プログラムの実行を防ぎます。

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

HTTPリクエストメソッド(取得、投稿、配置、削除など)とは何ですか?それぞれを使用する必要がありますか? HTTPリクエストメソッド(取得、投稿、配置、削除など)とは何ですか?それぞれを使用する必要がありますか? Apr 09, 2025 am 12:09 AM

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPは、ファイルを安全に処理する方法をどのように処理しますか? PHPは、ファイルを安全に処理する方法をどのように処理しますか? Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

PHP OOPで、self ::、parent ::、and static ::の違いを説明します。 PHP OOPで、self ::、parent ::、and static ::の違いを説明します。 Apr 09, 2025 am 12:04 AM

Phpoopでは、self ::は現在のクラスを指し、親::は親クラスを指し、静的::は後期静的結合に使用されます。 1.Self ::静的方法と一定の呼び出しに使用されますが、後期静的結合をサポートしていません。 2.Parent ::サブクラスには、親クラスのメソッドを呼び出すために使用され、プライベートメソッドにアクセスできません。 3.Static ::継承と多型に適した後期静的結合をサポートしますが、コードの読みやすさに影響を与える可能性があります。

See all articles