Revisión de la Competición de Puntos 2

Pregunta 1F - HDU Trono de Hielo - 1248

Titulo original

http://acm.hdu.edu.cn/showproblem.php?pid=1248

Aporte

La primera línea de datos de entrada es un número entero T (1 <= T <= 100), que representa el número de datos de prueba. Luego hay T filas de datos de prueba, cada dato de prueba solo contiene un entero positivo N (1 <= N<= 10000), N representa el valor nominal del billete en la mano del caballero de la muerte.

Nota: La Tienda Goblin solo tiene los tres artículos descritos en la pregunta.

Producción

Para cada conjunto de datos de prueba, genere la cantidad mínima de dinero que un caballero de la Muerte debería desperdiciar como propina para un comerciante goblin
Entrada de muestra
2
900
250
Salida de muestra
0
50

Respuesta

Aunque esta pregunta es una pregunta de programación dinámica, solo puede usar el método más popular: QAQ. No sé cómo hacer programación dinámica
(el método es más inteligente, busca la relación entre 150, 200, 350 (350 = 150+200, por lo que 350 se puede reemplazar directamente por 150+200), los otros 200 se pueden considerar como 150+50))

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
    
    
    int t,n,sum,n1;
    cin>>t;
    while(t--)
    {
    
    
        cin>>n;
        sum=n;
        n1=sum/150;
        sum=sum%150;
        if(sum/50<=n1)
        {
    
    
            sum=sum%50;
        }
        else
            sum=sum-n1*50;
        cout<<sum<<endl;
    }
    return 0;
}

Pregunta 2J - La historia de la HDU de agua salada - 1408

Titulo original

Al colgar agua salada, si el goteo es regular, primero deje caer una gota y haga una pausa; luego deje caer dos gotas y haga una pausa; luego deje caer tres gotas y haga una pausa... Ahora hay una pregunta: Esta botella de agua salada tiene un total de VUL ml Cada gota son D mililitros, y la velocidad de cada gota es un segundo (suponiendo que la última gota es menor que D mililitros, el tiempo transcurrido también se cuenta como un segundo), y el tiempo de pausa también es un segundo. ¿Cuándo se terminará esta botella de agua?

Aporte

Los datos de entrada contienen múltiples instancias de prueba, cada instancia ocupa una línea, que consta de VUL y D, donde 0<D<VUL<5000.

Producción

Para cada conjunto de datos de prueba, genere el tiempo requerido para completar la instalación de agua salada. La salida de cada instancia ocupa una línea.

Entrada de muestra

10 1

Salida de muestra

13

Respuesta

Esta pregunta examina la simulación y hay un doble problema: si uso int para definir la capacidad y el volumen de una gota, no importa cómo lo escriba, será WA; finalmente, tome prestado el código de un amigo para corregirlo.

#include <iostream>

using namespace std;

int main()
{
    
    
    double a,b,sum;
    while(cin>>a>>b)
    {
    
    
        sum=0;
        int i=1,ii;
        ii=i;
        while(a>0)
        {
    
    
            while(ii--)
            {
    
    
                if(a>0)
                {
    
    
                    sum=sum+1;
                    a=a-b;
                }
            }
            if(a>0)
            {
    
    
                sum=sum+1;
                i++;
                ii=i;
            }

        }
        cout<<sum<<endl;
    }
    return 0;
}

Pregunta 3A - Jolly Jumpers SCU - 1997

Titulo original

Traducción:
Una secuencia de n>0 enteros se llama jolly jumper si el valor absoluto de la diferencia entre elementos consecutivos toma todos los valores de 1 a n-1. Por ejemplo,

1 4 2 3

Sea un saltador feliz porque las diferencias absolutas son 3, 2 y 1 respectivamente. Esta definición significa que cualquier secuencia de números enteros es un saltador alegre. Necesita escribir un programa para determinar si cada secuencia en una serie de secuencias es un saltador alegre.

Aporte

Cada línea de entrada contiene un número entero con n < 3000, seguido de n números enteros que representan la secuencia.

Producción

Para cada línea de entrada, genere una línea de salida, que represente "Jolly" o "notjolly".

Entrada de muestra

4 1 4 2 3
5 1 4 2 -1 6

Salida de muestra

alegre
no alegre

Respuesta

#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>
using namespace std;
#define ll long long
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;

int n, a[10000+8], buffer[10000+8];

int main()
{
    
    
    while(~scanf("%d", &n))
    {
    
    
        int id = 0;
        for(int i = 0; i<n; i++)
        {
    
    
            scanf("%d", &a[i]);
            if(i)buffer[id++] = abs(a[i]-a[i-1]);
        }
        sort(buffer, buffer+id);
        bool flag = 1;
        for(int i = 0; i<id; i++)
        {
    
    
            if(buffer[i] != i+1)
            {
    
    
                flag = 0;
                break;
            }
        }
        if(flag)printf("Jolly\n");
        else printf("Not jolly\n");
    }
    return 0;
}

Pregunta 4D - Búsqueda binaria (2) Jisuanke-T1561

Titulo original

El Sr. Garlic tiene una matriz AA de longitud nn en su mano. Dado que la matriz es demasiado grande, el Sr. Suan Tou no sabe qué números hay en la matriz, por lo que el Sr. Suan a menudo pregunta cuál es el valor mínimo mayor o igual a xx en la matriz AA.

Formato de entrada

La primera línea ingresa dos números enteros nn y mm, que representan la longitud de la matriz y el número de consultas respectivamente.
La siguiente línea contiene nn enteros aiai.
En las siguientes líneas de mm, cada línea tiene 11 números enteros xx, que indican el número entero solicitado por el Sr. Suan Tou.

Formato de salida

Para cada consulta, si se puede encontrar, genere este número entero.
De lo contrario, genere −1−1.

rango de datos

1≤n,m≤105,0≤x≤1061≤n,m≤105,0≤x≤106。

Entrada de muestra

10 5
1 1 1 2 3 5 5 7 8 9
0
1
4
9
10

Salida de muestra

1
1
5
9-1
_

Respuesta


#include <bits/stdc++.h>
using namespace std;
 
const int MAXN = 1e5+6;
int a[MAXN] = {
    
    };
 
int lower_bound(int *A, int l, int r, int x) {
    
    
    while (l <= r) {
    
    
        int mid = l+((r-l)>>1);
        if (A[mid]>=x) {
    
    
            r=mid-1;
        } else {
    
    
            l=mid+1;
        }
    }
    return l;
}
 
int main() {
    
    
    //读入数据
    int n,m;
    scanf("%d%d", &n, &m);
    int i;
    for (i=0; i<n; i++) {
    
    
        scanf("%d", &a[i]);
    }
 
    //排序
    sort(a, a+n);
 
    //查询数据
    for (i=0; i<m; i++) {
    
    
        int x;
        scanf("%d", &x);
 
        if (x<a[0]) {
    
    
            printf("%d\n", a[0]);
        } else if (x>a[n-1]) {
    
    
            printf("-1\n");
        } else {
    
    
            int pos = lower_bound(a, 0, n-1, x);
            printf("%d\n", a[pos]);
        }
    }
 
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/yang369741/article/details/112996912
Recomendado
Clasificación