Adiós 2020 A. Pensamiento sobre el dilema bovino

Argus fue acusado de vigilar a Io, que no es una vaca común. Io es una gran exploradora y se aleja con bastante frecuencia, lo que hace que la vida de Argus sea estresante. Así que el pastor decidió construir un prado cercado para Io.

Hay n árboles que crecen a lo largo del río, donde Argus cuida de Io. Para este problema, el río puede verse como el eje OX del sistema de coordenadas cartesianas, y los n árboles como puntos con la coordenada y igual a 0. También hay otro árbol que crece en el punto (0,1).

Argus atará una cuerda alrededor de tres de los árboles, creando un pasto triangular. Su forma exacta no le importa a Io, pero su área es crucial para ella. Puede haber muchas formas para que Argus arregle la cerca, pero solo las que dan como resultado diferentes áreas del pasto son interesantes para Io. Calcule el número de áreas diferentes que puede tener su pastizal. Tenga en cuenta que el pasto debe tener un área distinta de cero.

Entrada
La entrada consta de varios casos de prueba. La primera línea contiene un número entero t (1≤t≤100) - el número de casos de prueba. Luego siguen t casos de prueba, cada uno se describe en dos líneas.

En la primera línea de cada caso de prueba hay un único entero n (1≤n≤50) que indica el número de árboles que crecen a lo largo del río. La siguiente línea contiene n números enteros distintos x1 <x2 <… <xn − 1 <xn (1≤xi≤50), las coordenadas x de los árboles que crecen a lo largo del río.

Salida
En una sola línea, la salida es un número entero, el número de áreas distintas de cero que pueden tener los triángulos con árboles como vértices.

Ejemplo de entrada
Copia
8
4
1 2 4 5
3
1 3 5
3
2 6 8
2
1 2
1
50
5
3 4 5 6 8
3
1 25 26
6
1 2 4 8 16 32
salida Copia
4
2
3
1
0
5
3
15
Nota
En el En el primer caso de prueba, tenemos 6 triángulos no degenerados con las siguientes áreas: 0.5, 0.5, 1, 1.5, 1.5 y 2. El pasto puede tener 4 áreas diferentes, por lo que 4 es la respuesta.

En el segundo caso de prueba, tenemos 3 triángulos no degenerados con las siguientes áreas: 1, 1 y 2. El pasto puede tener 2 áreas diferentes, por lo que 2 es la respuesta.

Los siguientes dos dibujos presentan la situación en el segundo caso de prueba. Los triángulos azules en el primer dibujo tienen área 1. El triángulo rojo en el segundo dibujo tiene área 2.

Inserte la descripción de la imagen aquí
Feliz año nuevo pato, el día de año nuevo viene a complementar la pregunta.
Debido a que la altura es un 1 dado, la diferencia de área se basa principalmente en el número de puntos en la abscisa.

#include<map>
#include<stack>
#include<queue>
#include<string>
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define ls (k<<1)
#define rs (k<<1|1)
#define pb push_back
#define mid ((l+r)>>1)
#include<bits/stdc++.h>
using namespace std;
const int p=1e4+7;
const int mod=1e9+7;
const int maxn=1e6+1;
typedef long long ll;
const int inf=0x3f3f3f3f;
int a[maxn];
void solve(){
    
    
    int t;
    cin>>t;
    while(t--){
    
    
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        sort(a+1,a+1+n);
        map<int,int>mp;
        int ans=0;
        for(int i=1;i<=n;i++){
    
    
            for(int j=i+1;j<=n;j++){
    
    
                int tmp=a[j]-a[i];
                if(!mp[tmp]){
    
    
                    ans++;
                    mp[tmp]++;
                }
            }
        }
        cout<<ans<<endl;
    }
}
int main()
{
    
    
   	ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
	solve();
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_45891413/article/details/112058368
Recomendado
Clasificación