Table des matières
Exemple
Input
Output
Maison développement back-end C++ Programme C++ pour calculer le coût total requis pour qu'un robot effectue un voyage dans une grille

Programme C++ pour calculer le coût total requis pour qu'un robot effectue un voyage dans une grille

Aug 25, 2023 pm 04:53 PM
成本 grille robot informatique

Programme C++ pour calculer le coût total requis pour quun robot effectue un voyage dans une grille

Supposons que nous ayons une grille de taille h x l. Chaque cellule de la grille contient un entier positif. Il existe maintenant un robot de recherche de chemin placé sur une cellule spécifique (p, q) (où p est le numéro de ligne et q est le numéro de colonne) et il peut se déplacer vers la cellule (i, j). L'opération de déplacement a un coût spécifique égal à |p - i| + |q - j|. Il existe désormais q voyages avec les propriétés suivantes.

  • Chaque trajet a deux valeurs (x, y) et a une valeur commune d.

  • Le robot est placé sur une cellule de valeur x puis se déplace vers une autre cellule de valeur x + d.

  • Ensuite, il se déplace vers une autre cellule avec la valeur x + d + d. Ce processus se poursuivra jusqu'à ce que le robot atteigne une cellule avec une valeur supérieure ou égale à y.

  • y - x est un multiple de d.

Compte tenu de ces déplacements, il faut trouver le coût total de chaque déplacement. Si le robot ne peut pas bouger, le coût du déplacement est de 0.

Donc, si l'entrée est h = 3, w = 3, d = 3, q ​​​​= 1, grille = {{2, 6, 8}, {7, 3, 4}, {5, 1, 9 }} , trips = {{3, 9}}, alors la sortie sera 4.

3 sur cellule (2, 2)

6 sur cellule (1, 2)

9 sur cellule (3, 3)

Coût total = | (3-1) + (3-2) = 4.

Pour résoudre ce problème, nous suivrons les étapes suivantes :

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)
Copier après la connexion

Voyons l'implémentation ci-dessous pour une meilleure compréhension −

Exemple

#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;
}
Copier après la connexion

Input

3, 3, 3, 1, {{2, 6, 8}, {7, 3, 4}, {5, 1, 9}}, {{3, 9}}
Copier après la connexion

Output

4
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Annotation de cadre de délimitation redondant multi-grille pour une détection précise des objets Annotation de cadre de délimitation redondant multi-grille pour une détection précise des objets Jun 01, 2024 pm 09:46 PM

1. Introduction Actuellement, les principaux détecteurs d'objets sont des réseaux à deux étages ou à un étage basés sur le réseau de classificateurs de base réutilisé du Deep CNN. YOLOv3 est l'un de ces détecteurs à un étage de pointe bien connus qui reçoit une image d'entrée et la divise en une matrice de grille de taille égale. Les cellules de grille avec des centres cibles sont chargées de détecter des cibles spécifiques. Ce que je partage aujourd'hui est une nouvelle méthode mathématique qui alloue plusieurs grilles à chaque cible pour obtenir une prédiction précise et précise du cadre de délimitation. Les chercheurs ont également proposé une amélioration efficace des données par copier-coller hors ligne pour la détection des cibles. La méthode nouvellement proposée surpasse considérablement certains détecteurs d’objets de pointe actuels et promet de meilleures performances. 2. Le réseau de détection de cibles en arrière-plan est conçu pour utiliser

La feuille de route montre la tendance de l'IA à « remplacer » les occupations humaines La feuille de route montre la tendance de l'IA à « remplacer » les occupations humaines Jan 04, 2024 pm 04:32 PM

J'ai vu hier une image intéressante qui était une "carte de niveau de l'IA remplaçant les chemins humains". Comme le montre l'image, le jeu est divisé en six niveaux différents, de E1 à E8+. On peut observer sur la figure que l’intelligence artificielle (IA) remplace les applications humaines dans différents domaines. Le cheminement du domaine d’application de l’intelligence artificielle est déterminé par son taux de tolérance aux pannes. En bref, la tolérance aux erreurs fait ici référence au coût des essais et des erreurs. L’IA remplacera progressivement les industries ayant des taux de tolérance aux erreurs plus élevés ou plus faibles et « remplacera » progressivement les occupations humaines. Dans le passé, nous pensions souvent que le travail créatif reposait sur la pensée humaine et n’était pas facile à remplacer. Cependant, avec le développement de l’intelligence artificielle, cette vision ne semble plus tout à fait exacte. Les emplois créatifs n’ont souvent pas de réponses fixes

Étapes pour configurer la grille de caméra sur iPhone Étapes pour configurer la grille de caméra sur iPhone Mar 26, 2024 pm 07:21 PM

1. Ouvrez le bureau de votre iPhone, recherchez et cliquez pour accéder à [Paramètres], 2. Cliquez pour accéder à [Caméra] sur la page des paramètres. 3. Cliquez pour activer le commutateur sur le côté droit de [Grille].

Conseils de mise en page CSS : meilleures pratiques pour la mise en œuvre de la disposition des icônes de grille circulaire Conseils de mise en page CSS : meilleures pratiques pour la mise en œuvre de la disposition des icônes de grille circulaire Oct 20, 2023 am 10:46 AM

Conseils de mise en page CSS : meilleures pratiques pour la mise en œuvre de la mise en page des icônes de grille circulaire La mise en page en grille est une technique de mise en page courante et puissante dans la conception Web moderne. La disposition des icônes en grille circulaire est un choix de conception plus unique et plus intéressant. Cet article présente quelques bonnes pratiques et des exemples de code spécifiques pour vous aider à implémenter une disposition d'icônes de grille circulaire. Structure HTML Tout d'abord, nous devons configurer un élément conteneur et placer l'icône dans ce conteneur. Nous pouvons utiliser une liste non ordonnée (&lt;ul&gt;) comme conteneur, et les éléments de la liste (&lt;l

Le premier algorithme de compression de 100 milliards de modèles SparseGPT est là, réduisant les coûts de puissance de calcul tout en maintenant une grande précision Le premier algorithme de compression de 100 milliards de modèles SparseGPT est là, réduisant les coûts de puissance de calcul tout en maintenant une grande précision Apr 12, 2023 pm 01:01 PM

Depuis l’émergence de GPT-3 en 2020, la popularité de ChatGPT a une fois de plus mis sous les projecteurs les modèles de langage génératifs à grande échelle de la famille GPT, et ils ont montré de solides performances dans diverses tâches. Cependant, l’échelle énorme du modèle entraîne également une augmentation des coûts de calcul et une difficulté de déploiement accrue. Par exemple, le modèle GPT‑175B totalise au moins 320 Go de stockage au format demi-précision (FP16), nécessitant au moins cinq GPU A100 avec 80 Go de stockage pour l'inférence. La compression de modèle est actuellement une méthode couramment utilisée pour réduire le coût de calcul des grands modèles, mais jusqu'à présent, presque toutes les méthodes existantes

IA générative dans le cloud : construire ou acheter ? IA générative dans le cloud : construire ou acheter ? Dec 19, 2023 pm 08:15 PM

Compilé par David Linsigao | Produits produits par Yanzheng 51CTO Technology Stack (WeChat ID : blog51cto) Il existe une règle non écrite dans le domaine de la technologie : tout le monde aime utiliser la technologie des autres. Mais pour de nombreuses entreprises, l’IA générative ne semble pas correspondre à ce modèle. L’IA générative conduit rapidement à certaines décisions cruciales. Chaque organisation est confrontée à un choix important : créer une plateforme d'IA générative personnalisée en interne ou acheter une solution préemballée auprès d'un fournisseur d'IA (souvent proposée sous forme de service cloud). Le bricolage favorise le volume et les opportunités. C'est bizarre, mais la raison pourrait vous surprendre. Ils pourraient même vous amener à repenser votre stratégie genAI d'entreprise 1. Personnalisation et contrôle complets Réécrivez le contenu comme suit : Créez un

Programmation en C++, trouver le nombre de chemins d'un point à un autre dans une grille Programmation en C++, trouver le nombre de chemins d'un point à un autre dans une grille Aug 29, 2023 pm 10:25 PM

Dans cet article, nous sommes confrontés à un problème dans lequel nous devons trouver le nombre total de chemins du point A au point B, où A et B sont des points fixes, c'est-à-dire A est le point du coin supérieur gauche de la grille et B est le point inférieur. point du coin droit, par exemple −Input:N=5Output:252Input:N=4Output:70Input:N=3Output:20 Dans le problème donné, nous pouvons formaliser la réponse et dériver le résultat à travers des observations simples. Méthode de recherche de solution Dans cette méthode, nous dérivons une formule en observant que lorsque nous traversons la grille de A à B, nous devons aller à droite n fois et descendre n fois, ce qui signifie que nous devons trouver toutes les combinaisons de chemins possibles, nous obtenons donc

Programme C++ pour trouver le nombre de sauts requis par un robot pour atteindre une cellule spécifique dans une grille Programme C++ pour trouver le nombre de sauts requis par un robot pour atteindre une cellule spécifique dans une grille Sep 17, 2023 pm 07:17 PM

Disons que nous avons une grille hxw. La grille est représentée dans un tableau bidimensionnel appelé « initGrid », où chaque cellule de la grille est représentée par un « # » ou un « . ». '#' signifie qu'il y a un obstacle dans la grille, '.' signifie qu'il y a un chemin sur cette cellule. Maintenant, un robot est placé sur une cellule « c » de la grille qui a le numéro de ligne x et le numéro de colonne y. Le robot doit se déplacer d'une cellule « d » qui porte le numéro de ligne p et le numéro de colonne q vers une autre cellule. Les coordonnées de cellule c et d sont toutes deux données sous forme de paires d'entiers. Le robot peut désormais se déplacer d'une cellule à une autre comme suit : Si la cellule vers laquelle le robot souhaite se déplacer est située verticalement ou horizontalement à côté de la cellule actuelle, le robot peut

See all articles