目次
Example
Input
出力
ホームページ バックエンド開発 C++ ロボットがグリッド内を移動するのに必要な総コストを計算する C++ プログラム

ロボットがグリッド内を移動するのに必要な総コストを計算する C++ プログラム

Aug 25, 2023 pm 04:53 PM
料金 グリッド コンピューティングロボット

ロボットがグリッド内を移動するのに必要な総コストを計算する C++ プログラム

サイズ h x w のグリッドがあるとします。グリッド内の各セルには正の整数が含まれています。ここで、特定のセル (p, q) (p は行番号、q は列番号) に経路検索ロボットが配置され、セル (i, j) に移動できます。移動操作には、|p - i| |q - j| に等しい特定のコストがあります。現在、次のプロパティを持つ q 個の旅行があります。

  • 各旅行には 2 つの値 (x, y) があり、共通の値 d があります。

  • ロボットは値 x のセルに配置され、値 x d の別のセルに移動します。

  • 次に、値 x d d を持つ別のセルに移動します。このプロセスは、ロボットが y 以上の値を持つセルに到達するまで続きます。

  • y - x は d の倍数です。

これらの旅行を考えると、各旅行の合計費用を見つける必要があります。ロボットが移動できない場合、移動コストは 0 になります。

入力が h = 3、w = 3、d = 3、q = 1、grid = {{2, 6, 8}, {7, 3, 4}, {5 の場合, 1 , 9}}、trips = {{3, 9}} の場合、出力は 4 になります。

3 セル (2, 2) 上

6 セル (1, 2) 上

9 セル (3, 3) 上

合計コスト= | (1 - 2) (2 - 2) | | (3 - 1) (3 - 2) | = 4。

この問題を解決するには、次の手順に従います。

Define one map loc
for initialize i := 0, when i < h, update (increase i by 1), do:
   for initialize j := 0, when j < w, update (increase j by 1), do:
      loc[grid[i, j]] := new pair(i, j)
Define an array dp[d + 1]
for initialize i := 1, when i <= d, update (increase i by 1), do:
   j := i
   while j < w * h, do:
      n := j + d
      if j + d > w * h, then:
      Come out from the loop
   dx := |first value of loc[n] - first value of loc[j]|
   dy := |second value of loc[n] - second value of loc[j]|
   j := j + d
   insert dx + dy at the end of dp[i]
for initialize j := 1, when j < size of dp[i], update (increase j by 1), do:
   dp[i, j] := dp[i, j] + dp[i, j - 1]
for initialize i := 0, when i < q, update (increase i by 1), do:
   tot := 0
   le := first value of trips[i]
   ri := second value of trips[i]
   if ri mod d is same as 0, then:
      f := d
   Otherwise,
         f := ri mod d
   pxl := (le - f) / d
   pxr := (ri - f) / d
   if le is same as f, then:
    if ri is same as f, then:
      tot := 0
   Otherwise
      tot := tot + (dp[f, pxr - 1] - 0)
   Otherwise
      if ri is same as f, then:
            tot := 0
  Otherwise
tot := tot + dp[f, pxr - 1] - dp[f, pxl - 1]
print(tot)
ログイン後にコピー

理解を深めるために、以下の実装を見てみましょう −

Example

#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
void solve(int h, int w, int d, int q, vector<vector<int>> grid,
vector<pair<int, int>> trips) {
   map<int, pair<int, int>> loc;
   for (int i = 0; i < h; i++) {
      for (int j = 0; j < w; j++)
         loc[grid[i][j]] = make_pair(i, j);
   }
   vector<int> dp[d + 1];
   for (int i = 1; i <= d; i++) {
      int j = i;
      while (j < w * h) {
         int n = j + d;
          if (j + d > w * h)
             break;
             int dx = abs(loc[n].first - loc[j].first);
             int dy = abs(loc[n].second - loc[j].second);
             j += d;
             dp[i].push_back(dx + dy);
      }
      for (j = 1; j < dp[i].size(); j++)
        dp[i][j] += dp[i][j - 1];
   }
   for (int i = 0; i < q; i++) {
      int tot = 0;
      int le, ri;
      le = trips[i].first;
      ri = trips[i].second;
      int f;
      if (ri % d == 0)
         f = d;
      else
         f = ri % d;
      int pxl, pxr;
      pxl = (le - f) / d;
      pxr = (ri - f) / d;
      if (le == f){
         if (ri == f)
            tot = 0;
         else
            tot += (dp[f][pxr - 1] - 0);
      } else {
         if (ri == f)
            tot = 0;
         else
            tot += dp[f][pxr - 1] - dp[f][pxl - 1];
      }
      cout<< tot << endl;
    }
}
int main() {
   int h = 3, w = 3, d = 3, q = 1;
   vector<vector<int>> grid = {{2, 6, 8}, {7, 3, 4}, {5, 1, 9}};
   vector<pair<int, int>> trips = {{3, 9}};
   solve(h, w, d, q, grid, trips);
   return 0;
}
ログイン後にコピー

Input

3, 3, 3, 1, {{2, 6, 8}, {7, 3, 4}, {5, 1, 9}}, {{3, 9}}
ログイン後にコピー

出力

4
ログイン後にコピー

以上がロボットがグリッド内を移動するのに必要な総コストを計算する C++ プログラムの詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

正確なオブジェクト検出のためのマルチグリッド冗長境界ボックス注釈 正確なオブジェクト検出のためのマルチグリッド冗長境界ボックス注釈 Jun 01, 2024 pm 09:46 PM

1. はじめに 現在、主要なオブジェクト検出器は、深層 CNN のバックボーン分類器ネットワークを再利用した 2 段階または 1 段階のネットワークです。 YOLOv3 は、入力画像を受け取り、それを等しいサイズのグリッド マトリックスに分割する、よく知られた最先端の 1 段階検出器の 1 つです。ターゲット中心を持つグリッド セルは、特定のターゲットの検出を担当します。今日私が共有するのは、各ターゲットに複数のグリッドを割り当てて正確なタイトフィット境界ボックス予測を実現する新しい数学的手法です。研究者らはまた、ターゲット検出のための効果的なオフラインのコピー&ペーストデータの強化も提案しました。新しく提案された方法は、現在の最先端の物体検出器の一部よりも大幅に性能が優れており、より優れたパフォーマンスが期待されます。 2. バックグラウンドターゲット検出ネットワークは、次のように設計されています。

AIが人間の職業を「置き換える」傾向を示すロードマップ AIが人間の職業を「置き換える」傾向を示すロードマップ Jan 04, 2024 pm 04:32 PM

昨日、「人間の道を置き換えるAIのレベルマップ」という興味深い写真を見ました。写真に示すように、ゲームは E1 から E8+ までの 6 つの異なるレベルに分かれています。この図から、さまざまな分野で人工知能 (AI) が人間のアプリケーションを置き換えていることがわかります。人工知能の応用分野のパスは、その耐障害性によって決まります。つまり、ここでのエラー許容度とは、試行錯誤のコストを指します。 AIは、エラー許容率が高い産業から低い産業に徐々に置き換えられ、人間の職業を徐々に「置き換え」ていくでしょう。以前は、クリエイティブな仕事は人間の思考に依存しており、簡単に置き換えることはできないと考えられていました。しかし、人工知能の発展により、この見方は完全に正しいとは言えないようです。クリエイティブな仕事には決まった答えがないことが多い

iPhoneでカメラグリッドを設定する手順 iPhoneでカメラグリッドを設定する手順 Mar 26, 2024 pm 07:21 PM

1. iPhone のデスクトップを開き、[設定] を見つけてクリックして入力します。 2. 設定ページでクリックして [カメラ] に入ります。 3. [グリッド]の右側にあるスイッチをクリックしてオンにします。

CSS レイアウトのヒント: 円形グリッド アイコン レイアウトを実装するためのベスト プラクティス CSS レイアウトのヒント: 円形グリッド アイコン レイアウトを実装するためのベスト プラクティス Oct 20, 2023 am 10:46 AM

CSS レイアウトのヒント: 円形グリッド アイコン レイアウトを実装するためのベスト プラクティス グリッド レイアウトは、最新の Web デザインにおける一般的で強力なレイアウト手法です。円形のグリッド アイコン レイアウトは、よりユニークで興味深いデザインの選択です。この記事では、円形グリッド アイコン レイアウトの実装に役立ついくつかのベスト プラクティスと具体的なコード例を紹介します。 HTML 構造 まず、コンテナ要素を設定し、このコンテナにアイコンを配置する必要があります。順序なしリスト (&lt;ul&gt;) をコンテナとして使用でき、リスト項目 (&lt;l

最初の 1,000 億モデル圧縮アルゴリズム SparseGPT が登場、高精度を維持しながらコンピューティング電力コストを削減 最初の 1,000 億モデル圧縮アルゴリズム SparseGPT が登場、高精度を維持しながらコンピューティング電力コストを削減 Apr 12, 2023 pm 01:01 PM

2020 年に GPT-3 が登場して以来、ChatGPT の人気により、GPT ファミリーの生成大規模言語モデルが再び脚光を浴びるようになり、さまざまなタスクで優れたパフォーマンスを示しています。ただし、モデルの規模が巨大であるため、計算コストの増加と展開の難易度の増加も生じます。たとえば、GPT-175B モデルは半精度 (FP16) 形式で合計 320 GB 以上のストレージを備えており、推論には 80 GB のストレージを備えた A100 GPU が少なくとも 5 つ必要です。モデル圧縮は現在、大規模モデルの計算コストを削減するために一般的に使用されている方法ですが、これまでのところ、既存のほとんどすべての方法が

クラウドでの生成 AI: 構築するか、購入するか? クラウドでの生成 AI: 構築するか、購入するか? Dec 19, 2023 pm 08:15 PM

David Linsigao が編集 | Yanzheng 51CTO Technology Stack が作成した製品 (WeChat ID: blog51cto) テクノロジー分野には暗黙のルールがあります。それは、誰もが他人のテクノロジーを使用することを好むということです。しかし、多くの企業にとって、生成 AI はその型にはまらないようで、生成 AI はいくつかの重要な意思決定を急速に推進しています。すべての組織は、カスタムの生成 AI プラットフォームを社内で構築するか、AI ベンダーからパッケージ化されたソリューション (クラウド サービスとして提供されることが多い) を購入するかという重要な選択に直面しています。DIY は量と機会を優先します。奇妙ですが、その理由に驚かれるかもしれません。エンタープライズ genAI 戦略の再考につながる可能性もあります。 1. 完全なカスタマイズと制御 コンテンツを次のように書き換えます。

C++ でのプログラミング、グリッド内のある点から別の点へのパスの数を見つける C++ でのプログラミング、グリッド内のある点から別の点へのパスの数を見つける Aug 29, 2023 pm 10:25 PM

この記事では、点 A から点 B までのパスの総数を見つける必要があるという問題が与えられます。ここで、A と B は固定点です。つまり、A はグリッドの左上隅の点、B はグリッドの下端の点です。右隅の点、たとえば、−Input:N=5Output:252Input:N=4Output:70Input:N=3Output:20 与えられた問題では、単純な観察を通じて答えを形式化し、結果を導き出すことができます。解を見つける方法 この方法では、グリッドを A から B に横切るときに右に n 回、下に n 回移動する必要があることを観察して式を考え出します。これは、考えられるすべてのパスの組み合わせを見つける必要があることを意味します。

ロボットがグリッド内の特定のセルに到達するために必要なジャンプの回数を見つけるための C++ プログラム ロボットがグリッド内の特定のセルに到達するために必要なジャンプの回数を見つけるための C++ プログラム Sep 17, 2023 pm 07:17 PM

hxw グリッドがあるとします。グリッドは「initGrid」と呼ばれる 2 次元配列で表され、グリッド内の各セルは「#」または「.」で表されます。 「#」はグリッド内に障害物があることを意味し、「.」はそのセル上にパスがあることを意味します。今、ロボットは行番号 x と列番号 y を持つグリッド上のセル「c」に配置されます。ロボットは、行番号 p と列番号 q を持つ 1 つのセル「d」から別のセルに移動する必要があります。セル座標 c と d は両方とも整数のペアとして指定されます。ロボットは、次のように、あるセルから別のセルに移動できるようになります。ロボットが移動したいセルが、現在のセルに垂直または水平に隣接して配置されている場合、ロボットは次のように移動できます。

See all articles