☀L2-009 Agarra un sobre rojo (25 puntos) [PTA] [Simulación] [Sobrecarga de comparación de la función de clasificación]

Nadie ha agarrado sobres rojos, cierto ... Aquí hay un registro de N personas que se dieron sobres rojos entre sí y agarraron sobres rojos. Por favor, cuente sus ganancias al agarrar sobres rojos.

Formato de entrada:

Ingrese la primera línea para dar un número entero positivo N (≤10 4), es decir, el número total de personas que participan en sobres rojos y sobres rojos, luego estas personas se numeran del 1 al N. En las siguientes N líneas, la i-ésima línea da el registro del sobre rojo emitido por la persona número i, en el siguiente formato:

KN 1 P 1 ⋯ N K P K

Entre ellos, K (0≤K≤20) es el número de sobres rojos emitidos, Ni es el número de la persona que agarró el sobre rojo y P i (> 0) es la cantidad de sobres rojos envolvente (en puntos Como una unidad). Nota: Para los sobres rojos emitidos por la misma persona, cada persona solo puede tomarlo una vez como máximo y no se puede repetir.

Formato de salida:

Genere el número de serie de cada persona y la cantidad de ingresos en orden descendente de la cantidad de ingresos (en yuanes como unidad, genere 2 lugares decimales). La información de cada persona está en una línea con un espacio entre los dos números. Si hay un empate en la cantidad de ingresos, se emitirá en orden descendente según el número de sobres rojos tomados; si hay un empate, se emitirá en incrementos de acuerdo con el número individual.

Muestra de entrada:

10
3 2 22 10 58 8 125
5 1 345 3 211 5 233 7 13 8 101
1 7 8800
2 1 1000 2 1000
2 4 250 10 320
6 5 11 9 22 8 33 7 44 10 55 4 2
1 3 8800
2 1 23 2 123
1 8 250
4 2 121 4 516 7 112 9 10

Salida de muestra:

1 11.63
2 3.63
8 3.63
3 2.11
7 1.69
6 -1.67
9 -2.18
10 -3.26
5 -3.26
4 -12.32

No, no, nadie ha agarrado el sobre rojo, cierto (antiguo yygq) [Cabeza de perro manual] 

sort () tercer parámetro _compare, reescritura de __comp

Si hay un empate en la cantidad de ingresos, se emitirá en orden descendente según el número de sobres rojos tomados; si hay un empate, se emitirá en incrementos de acuerdo con el número individual.

bool f(struct mon a,struct mon b)
{
    if(a.first!=b.first)
    {
        return a.first>b.first;
    }
    else if(a.num!=b.num)
    {
        return a.num>b.num;
    }
    else if(a.second!=b.second)
    {
        return a.second<b.second;
    }
    return true;
}
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<set>
#include<vector>
using namespace std;
struct mon
{
    double first;
    int second;
    int num;
}money[10010];
bool f(struct mon a,struct mon b)
{
    if(a.first!=b.first)
    {
        return a.first>b.first;
    }
    else if(a.num!=b.num)
    {
        return a.num>b.num;
    }
    else if(a.second!=b.second)
    {
        return a.second<b.second;
    }
    return true;
}
int main()
{
    int N;
    cin>>N;
    for(int i=1;i<=N;i++)
    {
        int K;
        cin>>K;
        int out=0;
        while(K--)
        {
            int n,p;
            cin>>n>>p;
            out+=p;
            money[n].first+=p;
            money[n].second=n;
            money[n].num++;
        }
        money[i].first-=out;
        money[i].second=i;
    }
    sort(money+1,money+N+1,f);
    sort
    for(int i=1;i<=N;i++)
    {
        cout<<money[i].second<<" ";
        printf("%.2f\n",money[i].first/100);
    }
    return 0;
}

Referencia: https://blog.csdn.net/qq_43788669/article/details/103244031?biz_id=102&utm_term=L2-009%20Agarre el sobre rojo% 2025 puntos & utm_medium = distribuir.pc_search_result.none-task-blog-2 ~ all ~ sobaiduweb ~ predeterminado-0-103244031 & spm = 1018.2118.3001.4187

Supongo que te gusta

Origin blog.csdn.net/qq_43660826/article/details/108979867
Recomendado
Clasificación