vjudge question bank AA

vjudge question bank AA

Título->

  • Hay un montón de n palos de madera. La longitud y el peso de cada palo se conocen de antemano. Los palos deben ser procesados ​​por una máquina para trabajar la madera de uno en uno. Necesita algo de tiempo, llamado tiempo de configuración, para que la máquina prepare el procesamiento de un palo. Los tiempos de configuración están asociados con operaciones de limpieza y cambio de herramientas y formas en la máquina. Los tiempos de configuración de la máquina para trabajar la madera se dan de la siguiente manera:
    (a) El tiempo de configuración para el primer palo de madera es de 1 minuto.
    (b) Justo después de procesar una barra de longitud l y peso w, la máquina no necesitará tiempo de configuración para una barra de longitud l 'y peso w' si l <= l 'yw <= w'. De lo contrario, necesitará 1 minuto para la configuración.
    Debes encontrar el tiempo mínimo de preparación para procesar una pila dada de n palos de madera. Por ejemplo, si tiene cinco palos cuyos pares de longitud y peso son (9, 4), (2, 5), (1, 2), (5, 3) y (4, 1), entonces la configuración mínima el tiempo debe ser de 2 minutos ya que hay una secuencia de pares (4, 1), (5, 3), (9, 4), (1, 2), (2, 5).

Entrada

  • La entrada consta de casos de prueba T. El número de casos de prueba (T) se da en la primera línea del archivo de entrada. Cada caso de prueba consta de dos líneas: la primera línea tiene un número entero n, 1 <= n <= 5000, que representa el número de palos de madera en el caso de prueba, y la segunda línea contiene 2n números enteros positivos l1, w1, l2, w2, ..., ln, wn, cada uno de magnitud máxima de 10000, donde li y wi son la longitud y el peso del i ésimo palo de madera, respectivamente. Los enteros 2n están delimitados por uno o más espacios.

Salida

  • La salida debe contener el tiempo mínimo de configuración en minutos, uno por línea.

Entrada de muestra

  • 3
    5
    4 9 5 2 2 1 3 5 1 4
    3
    2 2 1 1 2 2
    3
    1 3 2 2 3 1

Salida de muestra

2
1
3
Temas a entender>
Google elogia Inserte la descripción de la imagen aquí
un montón de n palos. La longitud y el peso de cada barra se conocen de antemano. Estos palos de madera serán procesados ​​uno por uno por la maquinaria de carpintería. La máquina necesita algo de tiempo de preparación (llamado tiempo de preparación) para prepararse para manipular los bastones. El tiempo de fraguado está relacionado con la operación de limpieza y el reemplazo de herramientas y formas en la máquina. El tiempo de fraguado de la máquina para trabajar la madera es el siguiente:
(a) El tiempo de preparación del primer palo de madera es de 1 minuto.
(B) Después de procesar barras de longitud l y peso w, si l <= l 'yw <= w', la máquina no necesitará establecer el tiempo de ajuste de barras de longitud l 'y peso w'. De lo contrario, tomará 1 minuto configurar.
Encontrará el menor tiempo de preparación para procesar un determinado n palos de madera. Por ejemplo, si tiene cinco joysticks con pares de longitud y peso de (9, 4), (2, 5), (1,2), (5, 3) y (4, 1), el tiempo mínimo de configuración Deben ser 2 minutos porque hay secuencias de pares (4, 1), (5, 3), (9, 4), (1,2,), (2, 5).
La entrada del valor de
entrada contiene T casos de prueba. El número de casos de prueba (T) se da en la primera línea del archivo de entrada. Cada caso de prueba consta de dos líneas: la primera línea tiene el número entero n, 1 <= n <= 5000, que representa el número de barras en el caso de prueba, y la segunda línea contiene 2n números enteros positivos l1, w1, l2, w2, ... , Ln, wn, cada uno con un tamaño máximo de 10000, donde li y wi son la longitud y el peso del i-ésimo palo de madera, respectivamente. Los enteros 2n están separados por uno o más espacios.
Salida La
salida debe incluir el tiempo mínimo de establecimiento en minutos, uno por línea.

Lo primero en lo que pienso es, por supuesto, cómo ordenar. Si hay dos cantidades de lyw y dos matrices se calculan por separado, se perderán demasiados casos en el medio. Por lo tanto, es similar a la mochila original, puede arreglarlo primero, y luego comparar w, (huela el olor de una tabla), entonces—> veamos ver

#include <cstdio>
#include <iostream> #include <cstring> #include <cmath> #include <algorithm> using namespace std; const int maxn=5000+5; int t,n,ans1,f[maxn]; struct Senorita{ int l,w; }a[maxn]; bool comp1(Senorita A,Senorita B) { if(A.l==B.l) return A.w<B.w; return A.l<B.l; } int main() { scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); memset(f,0,sizeof(f)); ans1=1; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d",&a[i].l,&a[i].w); f[i]=1; } sort(a+1,a+n+1,comp1); for(int i=2;i<=n;i++) { f[i]=1; for(int j=1;j<i;j++) { if(a[i].w<a[j].w&&f[i]<f[j]+1) { f[i]=f[j]+1; ans1=max(ans1,f[i]); } } } printf("%d\n",ans1); } return 0; } 

Pero

¿Es esto lo que quiero decir? Por supuesto,
para no omitir el código durante la prueba inicial e inicializar la matriz f a 1 directamente cuando se inicializa memset, no es necesario asignar f más tarde. Sin embargo, el problema radica aquí: cuando Baidu memset funciona, descubrí que ha pasado mucho tiempo desde que escribí el tamaño y el valor invertido. La configuración de la variable global no tiene ningún efecto. Buscando Lenovo escribió que memset solo puede inicializar 0 y -1

Boom! !

Entonces, revisemos esta función nuevamente. La paráfrasis de Kang Kang Baidu
Inserte la descripción de la imagen aquíinicializa las matrices de caracteres en general, basándose en la asignación binaria, int es de cuatro bytes, asigna cada posición, solo admite 0 y 1, por lo que solo puede inicializarse al mismo tiempo [ 00000000 00000000 00000000 00000000] es 0 y [11111111 11111111 11111111 11111111] es -1.

Terminado

Otro dia felizInserte la descripción de la imagen aquí

Supongo que te gusta

Origin www.cnblogs.com/1999-09-21Karry-erfs/p/12695408.html
Recomendado
Clasificación