Jadual Kandungan
Contoh
Input
Output
Rumah pembangunan bahagian belakang C++ Program C++ untuk mengira jumlah kos yang diperlukan untuk robot menyelesaikan perjalanan dalam grid

Program C++ untuk mengira jumlah kos yang diperlukan untuk robot menyelesaikan perjalanan dalam grid

Aug 25, 2023 pm 04:53 PM
kos grid robot pengkomputeran

Program C++ untuk mengira jumlah kos yang diperlukan untuk robot menyelesaikan perjalanan dalam grid

Andaikan kita mempunyai grid saiz h x w. Setiap sel dalam grid mengandungi integer positif. Kini terdapat robot mencari laluan diletakkan pada sel tertentu (p, q) (di mana p ialah nombor baris dan q ialah nombor lajur) dan ia boleh bergerak ke sel (i, j). Operasi bergerak mempunyai kos khusus bersamaan dengan |p - i|. Kini terdapat perjalanan q dengan sifat berikut.

  • Setiap perjalanan mempunyai dua nilai (x, y) dan mempunyai nilai sepunya d.

  • Robot diletakkan pada sel dengan nilai x dan kemudian bergerak ke sel lain dengan nilai x + d.

  • Kemudian ia bergerak ke sel lain dengan nilai x + d + d. Proses ini akan berterusan sehingga robot mencapai sel dengan nilai lebih besar daripada atau sama dengan y.

  • y - x ialah gandaan d.

Memandangkan perjalanan ini, kita perlu mencari jumlah kos setiap perjalanan. Jika robot tidak boleh bergerak, kos perjalanan ialah 0.

Jadi jika input ialah h = 3, w = 3, d = 3, q ​​​​= 1, grid = {{2, 6, 8}, {7, 3, 4}, {5, 1, 9 }} , perjalanan = {{3, 9}}, maka outputnya ialah 4.

3 pada sel (2, 2)

6 pada sel (1, 2)

9 pada sel (3, 3)

Jumlah kos = | (3 - 1) + (3 - 2) |.

Untuk menyelesaikan masalah ini kami akan mengikuti langkah berikut:

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)
Salin selepas log masuk

Mari kita lihat pelaksanaan di bawah untuk pemahaman yang lebih baik −

Contoh

#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;
}
Salin selepas log masuk

Input

3, 3, 3, 1, {{2, 6, 8}, {7, 3, 4}, {5, 1, 9}}, {{3, 9}}
Salin selepas log masuk

Output

4
Salin selepas log masuk

Atas ialah kandungan terperinci Program C++ untuk mengira jumlah kos yang diperlukan untuk robot menyelesaikan perjalanan dalam grid. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Anotasi kotak sempadan berlebihan berbilang grid untuk pengesanan objek yang tepat Anotasi kotak sempadan berlebihan berbilang grid untuk pengesanan objek yang tepat Jun 01, 2024 pm 09:46 PM

1. Pengenalan Pada masa ini, pengesan objek utama ialah rangkaian dua peringkat atau satu peringkat berdasarkan rangkaian pengelas tulang belakang yang digunakan semula CNN dalam. YOLOv3 ialah salah satu pengesan satu peringkat tercanggih yang menerima imej input dan membahagikannya kepada matriks grid bersaiz sama. Sel grid dengan pusat sasaran bertanggungjawab untuk mengesan sasaran tertentu. Apa yang saya kongsikan hari ini ialah kaedah matematik baharu yang memperuntukkan berbilang grid kepada setiap sasaran untuk mencapai ramalan kotak sempadan ketat muat yang tepat. Para penyelidik juga mencadangkan peningkatan data salin-tampal luar talian yang berkesan untuk pengesanan sasaran. Kaedah yang baru dicadangkan dengan ketara mengatasi beberapa pengesan objek terkini dan menjanjikan prestasi yang lebih baik. 2. Rangkaian pengesanan sasaran latar belakang direka bentuk untuk digunakan

Peta hala tuju menunjukkan arah aliran AI 'menggantikan' pekerjaan manusia Peta hala tuju menunjukkan arah aliran AI 'menggantikan' pekerjaan manusia Jan 04, 2024 pm 04:32 PM

Saya melihat gambar menarik semalam iaitu "peta aras AI menggantikan laluan manusia". Seperti yang ditunjukkan dalam gambar, permainan ini dibahagikan kepada enam tahap berbeza, dari E1 hingga E8+. Kita boleh perhatikan daripada angka bahawa kecerdasan buatan (AI) menggantikan aplikasi manusia dalam bidang yang berbeza. Laluan medan aplikasi kecerdasan buatan ditentukan oleh kadar toleransi kesalahannya. Ringkasnya, toleransi kesilapan di sini merujuk kepada kos percubaan dan kesilapan. AI secara beransur-ansur akan menggantikan industri dengan kadar toleransi ralat yang lebih tinggi hingga lebih rendah dan secara beransur-ansur "menggantikan" pekerjaan manusia. Dahulu kita sering beranggapan bahawa karya kreatif bergantung kepada pemikiran manusia dan tidak mudah diganti. Walau bagaimanapun, dengan perkembangan kecerdasan buatan, pandangan ini nampaknya tidak sepenuhnya betul. Pekerjaan kreatif selalunya tidak mempunyai jawapan tetap

Langkah untuk menyediakan grid kamera pada iPhone Langkah untuk menyediakan grid kamera pada iPhone Mar 26, 2024 pm 07:21 PM

1. Buka desktop iPhone anda, cari dan klik untuk memasuki [Settings], 2. Klik untuk memasukkan [Camera] pada halaman tetapan. 3. Klik untuk menghidupkan suis di sebelah kanan [Grid].

Petua Reka Letak CSS: Amalan Terbaik untuk Melaksanakan Reka Letak Ikon Grid Pekeliling Petua Reka Letak CSS: Amalan Terbaik untuk Melaksanakan Reka Letak Ikon Grid Pekeliling Oct 20, 2023 am 10:46 AM

Petua Reka Letak CSS: Amalan Terbaik untuk Melaksanakan Tataletak Ikon Grid Pekeliling Susun atur Grid ialah teknik reka letak yang biasa dan berkuasa dalam reka bentuk web moden. Susun atur ikon grid bulat adalah pilihan reka bentuk yang lebih unik dan menarik. Artikel ini akan memperkenalkan beberapa amalan terbaik dan contoh kod khusus untuk membantu anda melaksanakan reka letak ikon grid bulat. Struktur HTML Mula-mula, kita perlu menyediakan elemen bekas dan letakkan ikon dalam bekas ini. Kita boleh menggunakan senarai tidak tertib (&lt;ul&gt;) sebagai bekas dan item senarai (&lt;l

AI Generatif dalam awan: Bina atau beli? AI Generatif dalam awan: Bina atau beli? Dec 19, 2023 pm 08:15 PM

Disusun oleh David Linsigao |. Produk yang dihasilkan oleh Yanzheng 51CTO Technology Stack (WeChat ID: blog51cto) Terdapat peraturan tidak bertulis dalam bidang teknologi: semua orang suka menggunakan teknologi orang lain. Tetapi untuk kebanyakan perniagaan, AI generatif nampaknya tidak sesuai dengan acuan itu dengan pantas AI Generatif memacu beberapa keputusan kritikal. Setiap organisasi menghadapi pilihan penting: sama ada untuk membina platform AI generatif tersuai secara dalaman atau membeli penyelesaian yang telah dibungkus daripada vendor AI (selalunya ditawarkan sebagai perkhidmatan awan yang mengutamakan volum dan peluang DIY). Ia pelik, tetapi sebabnya mungkin mengejutkan anda. Mereka mungkin membawa anda untuk memikirkan semula strategi genAI perusahaan anda 1. Lengkapkan penyesuaian dan kawalan Tulis semula kandungan seperti berikut: Bina

Algoritma pemampatan 100 bilion model pertama SparseGPT ada di sini, mengurangkan kos kuasa pengkomputeran sambil mengekalkan ketepatan yang tinggi Algoritma pemampatan 100 bilion model pertama SparseGPT ada di sini, mengurangkan kos kuasa pengkomputeran sambil mengekalkan ketepatan yang tinggi Apr 12, 2023 pm 01:01 PM

Sejak kemunculan GPT-3 pada tahun 2020, populariti ChatGPT sekali lagi membawa model bahasa berskala besar generatif keluarga GPT menjadi perhatian, dan mereka telah menunjukkan prestasi yang kukuh dalam pelbagai tugas. Walau bagaimanapun, skala besar model juga membawa peningkatan kos pengiraan dan peningkatan kesukaran penggunaan. Sebagai contoh, model GPT‑175B berjumlah sekurang-kurangnya 320GB storan dalam format separuh ketepatan (FP16) dan memerlukan sekurang-kurangnya lima GPU A100 dengan storan 80 GB untuk inferens. Pemampatan model pada masa ini merupakan kaedah yang biasa digunakan untuk mengurangkan kos pengiraan model besar, tetapi setakat ini, hampir semua yang sedia ada.

Program C++ untuk mencari bilangan lompatan yang diperlukan oleh robot untuk mencapai sel tertentu dalam grid Program C++ untuk mencari bilangan lompatan yang diperlukan oleh robot untuk mencapai sel tertentu dalam grid Sep 17, 2023 pm 07:17 PM

Katakan kita mempunyai grid hxw. Grid diwakili dalam tatasusunan dua dimensi yang dipanggil 'initGrid', di mana setiap sel dalam grid diwakili oleh '#' atau '.'. '#' bermaksud terdapat halangan dalam grid, '.' bermakna terdapat laluan pada sel tersebut. Kini, robot diletakkan pada sel 'c' pada grid yang mempunyai nombor baris x dan nombor lajur y. Robot perlu bergerak dari satu sel 'd' yang mempunyai nombor baris p dan nombor lajur q ke sel lain. Koordinat sel c dan d kedua-duanya diberikan sebagai pasangan integer. Robot kini boleh bergerak dari satu sel ke sel lain seperti berikut: Jika sel yang robot ingin dialihkan terletak secara menegak atau mendatar bersebelahan dengan sel semasa, robot boleh

Program C++ untuk mengira jumlah kos yang diperlukan untuk robot menyelesaikan perjalanan dalam grid Program C++ untuk mengira jumlah kos yang diperlukan untuk robot menyelesaikan perjalanan dalam grid Aug 25, 2023 pm 04:53 PM

Katakan kita mempunyai grid saiz hxw. Setiap sel dalam grid mengandungi integer positif. Kini terdapat robot mencari laluan yang diletakkan pada sel tertentu (p,q) (di mana p ialah nombor baris dan q ialah nombor lajur) dan ia boleh bergerak ke sel (i,j). Operasi bergerak mempunyai kos khusus bersamaan dengan |p-i|+|q-j|. Kini terdapat perjalanan q dengan sifat berikut. Setiap perjalanan mempunyai dua nilai (x, y) dan mempunyai nilai sepunya d. Robot diletakkan pada sel dengan nilai x dan kemudian bergerak ke sel lain dengan nilai x+d. Kemudian ia bergerak ke sel lain dengan nilai x+d+d. Proses ini akan berterusan sehingga robot mencapai sel dengan nilai lebih besar daripada atau sama dengan y. y-x ialah gandaan bagi d

See all articles