Notez la solution au problème ABC115 C C'était une simple question de tri normalement. https://atcoder.jp/contests/abc115/tasks/abc115_c
Le problème de choisir K parmi un grand nombre d'arbres et de faire la plus petite différence entre les hauteurs maximales et minimales des arbres. Étant donné que le nombre d'arbres comprend jusqu'à 6 chiffres, si vous essayez jusqu'au bout, ce sera TLE avec une marge. De plus, le sentiment qu'il peut être résolu avec O (N) est incroyable. Étant donné que la différence entre le plus grand arbre et le plus petit arbre est tirée des K livres, si vous triez et prenez K livres dans l'ordre croissant, tournez-le vers le nième arbre avec for et update ans, vous pouvez obtenir la réponse. remarquer
int ans = 1000000000;
for(int i = 0;i + k - 1 < n;i++){
int kari = h[i + k - 1] - h[i]; //Le maximum et le minimum sont clairs car ils sont triés
ans = Math.min(ans, kari);
}
Recommended Posts