Examen físico HDU - 4442

** Examen físico HDU - 4442 **
WANGPENG es un estudiante de primer año. Se le solicita un examen físico al ingresar a la universidad.
Ahora WANGPENG llega al hospital. Er …… ¡Hay tantos estudiantes, y el número está aumentando!
Hay muchas asignaturas de examen para hacer y hay una cola para cada asignatura. Las colas se hacen más largas a medida que pasa el tiempo. Elegir la cola para estar de pie siempre es un problema. Ayude a WANGPENG a determinar la secuencia de un examen, para que pueda terminar todas las materias del examen físico lo antes posible.
Entrada
Hay varios casos de prueba. Cada caso de prueba comienza con un número entero positivo n en una línea, lo que significa el número de sujetos (colas).
Luego siguen n líneas. La i-ésima línea tiene un par de números enteros (ai, bi) para describir la i-ésima cola:

  1. Si WANGPENG sigue esta cola en el tiempo 0, WANGPENG tiene que esperar unos segundos para terminar este tema.
  2. A medida que la cola se alarga, el tiempo de espera aumentará en dos segundos cada segundo mientras WANGPENG no esté en la cola.
    La entrada termina con n = 0.
    Para todos los casos de prueba, 0 <n≤100000, 0≤ai, bi <231.
    Salida
    Para cada caso de prueba, envíe una línea con un número entero: el tiempo más temprano (contado por segundos) en que WANGPENG puede terminar todas las materias del examen. Dado que WANGPENG siempre se confunde con los años, solo imprima el mod de segundos 365 × 24 × 60 × 60.
    Entrada de muestra
    5
    1 2
    2 3
    3 4
    4 5
    5 6
    0
    Salida de muestra
    1419

Sugerencia
En la entrada de muestra, WANGPENG simplemente siga el orden indicado. Pasa 1 segundo en la primera cola, 5 segundos en la 2ª cola, 27 segundos en la 3ª cola,
169 segundos en la 4ª cola y 1217 segundos en la 5ª cola. Entonces el tiempo total es 1419s. WANGPENG ha calculado todas las órdenes posibles en su
cabezal paralelo de 120 núcleos y ha decidido que esta es la elección óptima.

** Solución de la pregunta: ** El significado de la pregunta es que hay n equipos, dado a, b, a representa el tiempo que se tarda en alinearse en el tiempo 0, b representa el tiempo pasado en otros equipos en línea con cada segundo aumente en b tiempo, y finalmente pregunte por la línea El tiempo mínimo.
La idea es ser codicioso. La clave es ordenar de pequeño a grande de acuerdo con a1 * b2. Los datos int se dispararán. Para abrir longlong, la derivación y el código específicos son los siguientes:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cctype>
#include<iomanip>
#include<map>
#include<vector>
#include<list>
#include<deque>
#include<stack>
#include<queue>
#include<set>
#include<cctype>
#include<string>
#include<stdexcept>
#include<fstream>
#include<sstream>
#define mem(a,b) memset(a,b,sizeof(a))
#define debug() puts("what the fuck!")
#define dedebug() puts("what the fuck!!!")
#define ll long long
#define ull unsigned long long
#define speed {
    
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); };
using namespace std;
const double PI = acos(-1.0);
const int maxn = 1e6 + 50;
const int N = 35;
const int INF = 0x3f3f3f3f;
const double esp_0 = 1e-6;
const int mod=365*24*60*60;
int gcd(int x, int y) {
    
    
	return y ? gcd(y, x % y) : x;
}
/**
 * 假设有两个队伍,(a1,b1),(a2,b2)
 * 先排第一队ans=a1+a1*b2+a2=a1+a2+a1*b2;
 * 先排第二队ans=a2+a2*b1+a1=a1+a2+a2*b1
 * 决定性因素是a*b
 * 所以可以对结构体进行排序
 */
struct node{
    
    
    ll a,b;
    friend bool operator<(node &x,node &y){
    
    
        return x.a*y.b<x.b*y.a;
    }
}arr[maxn];
int main(){
    
    
    int n;
    while(scanf("%d",&n),n){
    
    
        for(int i=0;i<n;++i){
    
    
            scanf("%lld %lld",&arr[i].a,&arr[i].b);
        }
        sort(arr,arr+n);
//        for(int i=0;i<n;++i)cout<<arr[i].a<<" "<<arr[i].b<<endl;
        ll ans=arr[0].a;
        for(int i=1;i<n;++i){
    
    
            ans=(ans+(ans*arr[i].b+arr[i].a))%mod;
//            cout<<ans<<"***"<<endl;
        }
        printf("%lld\n",ans);
    }
//    system("pause");
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_40924271/article/details/109399488
Recomendado
Clasificación