la pensée de la conception du programme et la pratique des opérations Semaine4 (1/2 / Smart Class)

La peur de DDL - A

ZJM il n emplois sont, chaque travail a sa propre LDD, si ZJM pas fait le travail avant la SLDDTC, l'enseignant déduira ce travail tous les points habituels.

Alors ZJM veulent savoir comment organiser l'ordre des devoirs à boucler un peu moins de points que possible.

S'il vous plaît l'aider!

Contribution

Entrée d'essai T. La première ligne d'entrée est un nombre entier T unique, a été trouvé dans le nombre de cas de test.

Chaque cas de test pour commencer un entier positif N (1 <= N <= 1000), indique le nombre d'emplois.

Puis deux lignes. La première ligne contient des nombres entiers N représentant le DDL, la ligne suivante contenant des nombres entiers N représentant des points de la boucle.

Production

Pour chaque cas de test, vous devez réduire la sortie du score total minimum, chaque ligne d'essai.

Exemple d'entrée

3
3
3 3 3
10 5 1
3
1 3 1
6 2 3
7
1 4 6 4 2 4 3
3 2 1 7 6 5 4

Exemple de sortie

0
3
5

idées:

Selon l'algorithme glouton, à partir de la plus grande DDL, DDL sera tout pour les emplois d'aujourd'hui ajoutés au tas, puis sélectionnez de la valeur actuelle du tas maximum pour s'assurer que chaque sélection est la plus grande valeur pour répondre aux conditions.

Procédé ergodique est la suivante

for(int i=maxDay; i>0; i--) {
   for(int j=0; j<n; j++) {
      if(ddl[j]==i) {
         heap.push(t[j]);
      }
   }
   int tmp = 0;
   if(heap.size()) {
      tmp = heap.top();
      heap.pop();
   }
   s-=tmp;
}

B - quatre colonnes

ZJM comporte quatre colonnes A, B, C, D, chaque colonne comporte le nombre de chiffres n. ZJM un nombre pris de chaque numéro de colonne respective, il aimerait savoir combien de types de programmes tels que le nombre de 4 et 0.

Quand un certain nombre de colonnes a la même pluralité de nombres, de les traiter comme un numéro différent.

S'il vous plaît l'aider!

Contribution

La première ligne: n (nombre représentatif du nombre de colonnes) (1≤n≤4000)

La prochaine n-ième rangée, le i-ième rangée de quatre nombres, chaque nombre de colonnes A, B, C, D dans la i-ième chiffre (chiffre 2 à la puissance de pas plus de 28)

Production

Le nombre de combinaisons différentes de sortie.

Exemple d'entrée

6
-45 22 -16 42
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45

Exemple de sortie

5

Allusion

Explication de l'échantillon: (-45, -27, 42, 30), (26, 30, -10, -46), (-32, 22, 56, -46), (--32, 30, -75, 77 ), (-32, -54, 56, 30).

pensée

Énumération a et b et obtenir tous les composés de la matrice ab, puis les trier. C et D, puis la traversée, la traversée, depuis ab commandé tableau, il est possible de trouver la position opposée à la première heure et le numéro de la dernière occurrence dans le ab de moitié, la distance entre eux est le nombre inverse de nombre, ans + = à.

Dans lequel, la fonction find_first ():

int find_first(int p){
   int right = n*n-1;
   int left = 0;
   int mid;
   int ans = -1;
   while(left<=right){
      mid = (right+left)/2;
      if(ab[mid]<p){
         left = mid+1;
      }
      else if(ab[mid]>p){
         right = mid-1;
      }
      else{
         ans = mid;
         right = mid - 1;
      }
   }
   return ans;
}

find_final fonction ()

int find_final(int p){
   int right = n*n-1;
   int left = 0;
   int mid;
   int ans = -1;
   while(left<=right){
      mid = (right+left)/2;
      if(ab[mid]<p){
         left = mid+1;
      }
      else if(ab[mid]>p){
         right = mid-1;
      }
      else{
         ans = mid;
         left = mid + 1;
      }
   }
   return ans;
}

C - TT cadeau mystère

TT est un amoureux des chats graves, canal de chat sur Indulge par jour dans la station B.

Un jour, un ZJM ami a décidé de TT TT un problème, si TT peut résoudre ce problème, ZJM va acheter un chat mignon a TT.

RESUME est donnée cat array [i] un nombre N, et générer une nouvelle avec le réseau de matrice ans [i]. Il est défini comme le nouveau tableau pour tout i, j et i = j, sont ans [] = abs (cat [i] - cat [j]) !, 1 <= i <j <= N. Cette nouvelle matrice. Déterminer la médiane, la médiane est le tri (len + 1) / 2 correspondant au numéro de position, « / » est un arrondi.

TT voulant désespérément oiseau mignon chat, pouvez-vous l'aider?

Contribution

plusieurs ensembles d'entrées, chaque entrée une N, le nombre N exprimé, après l'entrée d'une séquence de chat longueur de N, cat [i] <= 1e9, 3 <= n <= 1e5

Production

nouveau tableau de sortie ans médiane

Exemple d'entrée

4
1 3 2 4
3
1 2 10

Exemple de sortie

1
8

idées:

Pour le nouveau réseau, pour trouver l'indice (len + 1) à une position correspondant à un convertisseur numérique / 2, la réponse doit être comprise entre min et max, peut être effectuée pour trouver un nombre compris entre min et max, car le nombre entre le nouveau numéro de série dans le tableau est incrémenté, de sorte que l'indice se trouve par les points médians des deux méthodes, et pour chaque numéro d'index, si le chat trier le tableau, peut être transformé en ans ans [] = chat [j] -chat [i ], à savoir cat [j] = ans [] + cat [i], i énumération afin de satisfaire un chat [j] <= ans [] + cat [i] est obtenue, et j est le nombre du nombre actuel de le numéro de série, et le chat [j] augmente, on peut trouver de moitié pour répondre aux conditions <= j dernière relation, afin d'obtenir le numéro de série de chaque numéro, le numéro de série dans la médiane est la réponse.

Dans lequel j est obtenue en fonction de la dernière

int getMaxJ(int i,int p) {
   int r = n-1;
   int l = i+1;
   int mid;
   int ans = -1;
   while(l<=r){
      mid = (l+r)>>1;
      if(a[mid]<=p+a[i]){
         ans = mid;
         l = mid+1;
      }
      else{
         r = mid - 1;
      }
   }
   return ans;
}

Obtenu en fonction du nombre

int getNum(int p){
   int c = 0;
   for(int i=0;i<n;i++){
      int tmp = getMaxJ(i,p);
      if(tmp!=-1){
         c+=(tmp-i);
      }
   }
   return c;
}

Je suppose que tu aimes

Origine www.cnblogs.com/mopa/p/12528295.html
conseillé
Classement