Diferencia

Diferencia

y notas totales

La diferencia es hacer la diferencia entre cada elemento de la
secuencia y el elemento anterior, por ejemplo: una secuencia [1 7 6 5 2 4], después de la
diferencia, la secuencia de diferencia es [1 6 -1 -1-3 - 2-4] El primer número es el mismo que el primer número en la secuencia original (equivalente al primer número menos 0). La
secuencia de diferencia final es un número más que la secuencia original (equivalente a 0 menos el último número)

naturaleza

  1. La secuencia original se puede obtener sumando el prefijo de la secuencia de diferencias
  2. Todos los elementos del intervalo de secuencia original [L, R] +1 se pueden transformar en una secuencia de diferencia en L + 1 y R + 1 en -1
  3. De acuerdo con la propiedad 2, cada vez que la secuencia original se modifica a un intervalo +1, entonces el aumento y la disminución de la modificación de la secuencia de diferencia son los mismos

ejemplo

Descripción del Título

------ Los talentosos programadores Cai Kuwu y Shitou se unieron para participar en una competencia llamada Competencia Internacional de Cálculo de Permutación (ICPC). Las reglas de esta competencia son las siguientes:
un jugador da una longitud de Para el arreglo de n, otro jugador da m consultas. Cada consulta es un par de números de la forma (l, r). Pregunte la suma del número del número l al número r en la matriz dada por el compañero de equipo, y sume Después de consultar esto intervalo y sumando la puntuación total, ganará el equipo con la puntuación total más alta.
Stone tiene una mano rápida y dio m preguntas al comienzo del juego; Cai Kuiwu también es muy fuerte, siempre puede encontrar el arreglo más adecuado para hacer que la puntuación total de su equipo sea lo más alta posible.
Mientras miraba la transmisión en vivo del juego, vio las m consultas dadas por Shishi. ¿Puede ser lo suficientemente inteligente como para predecir el puntaje final de su equipo?
Un arreglo es una secuencia de longitud n, donde cada número del 1 al n aparece exactamente una vez en la secuencia. Por ejemplo, [1, 3, 2] es una permutación y [2, 1, 4] y [1, 2, 3, 3] no son permutaciones.

Ingrese descripción

Ingrese dos números n (1≤n≤2 × 105) y m (1≤m≤2 × 105) en la primera línea.
En las siguientes m líneas, ingrese dos números lyr en cada línea, que representan la suma del lésimo al résimo en la disposición de la consulta.

Descripción de salida

Genere un número entero que represente la puntuación total máxima de su equipo.

Ejemplo

ingresar


7 3
1 3
3 7
5 6

Producción

46

Ideas para resolver problemas

Significado de la pregunta: La pregunta anterior se describe simplemente: hay una secuencia de a, m de longitud n. Esta pregunta, cada pregunta es una suma de intervalo, resume los resultados de cada pregunta y pregunta cuál es el resultado más grande.
Solución : si desea obtener el resultado más grande, debe ser el número más grande para tomar la mayor cantidad de veces, por lo que puede usar la diferencia para contar las posiciones de intervalo dadas para ver la cantidad de veces que aparece cada posición. Luego clasifícalo y dale el número más grande al más grande.
Codigo :

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn = 2*10e5;
int n,m;
int r,l;
int a[maxn];
long long ans = 0;
int main()
{
    
    
    memset(a,0,sizeof(a));
    cin>>n>>m;
    //原序列区间+1操作转化为差分序列操作L处+1 R+1处-1
    for(int i = 0;i<m;i++)
    {
    
    
        cin>>l>>r;
        a[l]++;a[r+1]--;
    }
    //求原序列
    for(int i = 1;i<=n;i++)
    {
    
    
        a[i] += a[i-1];
    }
    //从小到大排序
    sort(a+1,a+1+n);
    //大的分配大的数
    for(long long i = 1;i<=n;i++)
    {
    
    
        ans+=i*a[i];
    }
    cout<<ans<<endl;

    return 0;
}

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_43531919/article/details/115266960
Recomendado
Clasificación