zoukankan      html  css  js  c++  java
  • UVA 10026 Shoemaker's Problem

    UVA_10026

    这个是一个贪心的题目首先按照fine/time降序排列,值相同的再按序号升序排列。

    对于为什么贪心策略是这个样子的,我们不妨拿相邻的两个事件ab来说明一下。由于ab之后的事件是固定的,所以我们无论排成ab还是排成ba后面部分的损失都是固定的,那么损失的差别主要来源于究竟是排成ab还是排ba。排ab的损失为ta*fb,排ba的损失为tb*fa,那么如果ta*fb<tb*fa,我们就排成ab,这样可以得到fa/ta>fb/tb,推而广之,就得到了我们的贪心策略。

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    double time[1010],fine[1010],b[1010];
    int r[1010];
    int cmp(const void *_p,const void *_q)
    {
    int *p=(int *)_p;
    int *q=(int *)_q;
    if(fabs(b[*p]-b[*q])<1e-6)
    return *p-*q;
    else if(b[*p]<b[*q])
    return 1;
    else
    return -1;
    }
    int main()
    {
    int i,j,k,n,t,tt;
    scanf("%d",&t);
    for(tt=0;tt<t;tt++)
    {
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    scanf("%lf%lf",&time[i],&fine[i]);
    b[i]=fine[i]/time[i];
    r[i]=i;
    }
    qsort(r,n,sizeof(r[0]),cmp);
    if(tt)
    printf("\n");
    for(i=0;i<n;i++)
    {
    if(i)
    printf(" ");
    printf("%d",r[i]+1);
    }
    printf("\n");
    }
    return 0;
    }


  • 相关阅读:
    EasyUI Datagrid换页不清出勾选方法
    【HDOJ】4902 Nice boat
    【HDOJ】1688 Sightseeing
    【HDOJ】3584 Cube
    【POJ】2155 Matrix
    【HDOJ】4109 Instrction Arrangement
    【HDOJ】3592 World Exhibition
    【POJ】2117 Electricity
    【HDOJ】4612 Warm up
    【HDOJ】2888 Check Corners
  • 原文地址:https://www.cnblogs.com/staginner/p/2183769.html
Copyright © 2011-2022 走看看