• zoj 1409 Communication System


    /*如果要一个物体的多种属性,最好用结构体,不要用二维数组或者多维数组。用多维数组进行关键字排序很不稳定 */ 
    /*给每个设备的所有价格排序,每个设备选取恰好比已知带宽大的价格(这个时候的比例最大)  循环每个设备就得到所有价格综合 然后得到该带宽下的B/P
    比较所有带宽的B/P 选取最大的就是所求的*/ 
    #include <stdlib.h>
    #include <stdio.h>
    #define true 1
    #define false 0 
    typedef struct  
    { int b, p; 
    }SYS;
    SYS sys[100][100];
    int cmp(const void * a, const void * b)
    {
     SYS * c = (SYS *) a;
     SYS * d = (SYS *) b;
     return c -> p - d -> p;
    }
    
    int main()
    {
         int n,i,j,sum,k,could,t;
         int m[100], bc;
         int b[10000];/*记录每种带宽*/ 
         double max,temp;
         scanf("%d",&t);
        while(t--)
        {
              scanf("%d",&n);
              bc = 0;
              for( i = 0; i < n; i++)
              {
                   scanf("%d",&m[i]);
                   for( j = 0; j < m[i]; j++)
                   {
                        scanf("%d%d",&sys[i][j].b,&sys[i][j].p) ;
                        b[bc++] = sys[i][j].b;/*记录所有带宽的值,然后排序 */
                   }
                   qsort(sys[i], m[i], sizeof(SYS), cmp);
              }
              max = 0;
              for( k = 0; k < bc; k++)/*循环每个带宽 */
              {
                   sum = 0;
                   could = true;
                   for(i = 0; i < n; i++)/*每个设备 */
                   {
                        for(j = 0; j < m[i]; j++)/*每个具体情况 */
                             if(sys[i][j].b >= b[k])/*从小到大,贪心 如果刚好比他大 */
                             {
                                  sum += sys[i][j].p;/*就记录这个设备的价格,然后跳到下一个设备 */
                                  break;
                             }
                         if(j == m[i])/*如果是循环到最后就证明是这个带宽是最大的就不用处理 */
                         {
                              could = false;
                              break;
                         }
                       }
                   if(could)/*如果这个带宽是可行的 */
                   {
                        temp = 1.0*b[k]/ sum;
                        max = max > temp ? max : temp;
                   }
                  }
          printf("%.3lf
    ",max);
            
        }    
     return 0;
    }
    /*
    1
    3
    2 120 80 155 40
    3 100 25 150 35 80 25
    2 100 100 120 110
    */
  • 相关阅读:
    (转载)openwrt nginx
    *** 竞赛中的各种低级错误,及编程常见错误小结 ***
    信息学奥赛辅导经验谈 & 问题教学法中的学生思维能力培养
    数学&数论的一些题
    信息学竞赛中的一些经典思维 (题)
    从权值线段树到主席树
    浅谈莫队算法
    CSP-S 2019提高组训练 服务器需求
    NOIP2019 PJ 对称二叉树
    NOIP2017 PJ 跳房子 —— 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/woshijishu3/p/3621367.html
Copyright © 2020-2023  润新知