Alors j'essayais de résoudre ce problème de programmation.Requêtes de sous-réseau
Étant donné un tableau de nombres et quelques requêtes. Chaque requête vous donne trois nombres a, b, c et vous demande de répondre à la somme de tous les éléments de l'index a à l'index b (tous deux inclus) qui sont inférieurs ou égaux à c.
par exemple:
tableau donné: {2,4,6,1,5,1,6,4,5,4}
3 requêtes doivent être traitées:
2 4 4 -> 5 ans = ie {4 + 1}
1 5 3 -> 3 ans = ie {2 + 1}
4 5 1 -> 1 ans =
chaque valeur dans le tableau est inférieure à 10^5, la longueur du tableau et le nombre de requêtes pourrait aller jusqu'à 10^5
Voici ce que j'ai fait J'ai utilisé l'algorithme de Mo (décomposition de racine carrée) pour trier les requêtes, et créé un arbre indexé binaire pour stocker la somme cumulative des éléments moins que toutes les valeurs de 1-10^5, et a fait une mise à jour en passant des requêtes aux requêtes. Avec cet algorithme, la complexité globale de ma solution est O (q * sqrt (N) * log (N)) mais elle n'est pas assez rapide. Je cherchais un meilleur algorithme. Je pense que la décomposition de la racine carrée des requêtes ne fonctionnerait pas. Existe-t-il un meilleur algorithme pour résoudre ce problème?
Je me demandais si une structure de données pouvait résoudre ce problème dont je ne suis pas au courant?
Vous voulez dire "a", "b", "c" sont des index? Et utilisez-vous l'indexation basée sur zéro? – Bahrom
@Bahrom a et b sont des indices basés sur '1', c est un nombre. – ash