POJ1018

原创 2015年11月20日 15:30:49

http://poj.org/problem?id=1018这题目有点难理解...

大意是说,现在要买一整套通信设备(由好几个部件组成),给你T组测试数据,每一组都有N种部件,而每一种部件备又有m个生厂商提供,他们有不同的带宽和价格,你可以购买n种生产商的任意一种,但是必须购买所有的部件设备才能运作,现在让你求出各个部件的最小带宽/总价格的最大值

可以用贪心的方法做,此题有多个变量,带宽,价格,部件的数量,然而所求的是最小带宽/价值,所以我们可以求出带宽的范围,然后枚举所有的带宽的可能,而这个带宽是最小带宽,所有选取的带宽都必须》=它(这里其实是一种思考的,假设带宽分别为3,4,5而我取2就已经满足了,这可能会造成我的最小带宽取不到(即其他的都大于它而没有一个等于它)但是此时最小带宽/价值一定小于真正的最下限/价值,所以循环到真正的最下限会自然替代)此时带宽已经确定,只需要求出满足最小下限的最小价格即可。最后不断更新比值的最大值

#include <stdio.h>
 int main()
 {
     int T;
     int n,i,j,k,max,min,min2,sum;
     double ans;
     int a[101][101],b[101][101],c[101];;//a是带宽,b是价格,c是有几个设备供选择
     scanf("%d",&T);
     while(T--)
     {
         scanf("%d",&n);
          max=0;
          min=10000;
         for (i=1;i<=n;i++)//i是第几个必备的设备
         {
          scanf("%d",&c[i]);
          for (j=1;j<=c[i];j++)//j是第几个选择
          {
          scanf("%d%d",&a[i][j],&b[i][j]);
          if (a[i][j]>max) max=a[i][j];
          if (a[i][j]<min) min=a[i][j];//找出带宽的上下限范围
          }
         }
         ans=0;
         for (k=min;k<=max;k++)//枚举带宽
         {
         sum=0;
         for (i=1;i<=n;i++)
         {
            min2=10000;//max2是计算每一种必备设备的最小价格
            for (j=1;j<=c[i];j++)
             if ((a[i][j]>=k)&&(b[i][j]<min2))
                min2=b[i][j];
                sum=sum+min2;//sum是每一种带宽固定下,满足所有设备的最小价格(其中每一个设备都尽量取最小值)
        }
        if (ans<k*1.0/sum)
            ans=k*1.0/sum;
         }
         printf("%.3f\n",ans);
         }
         return 0;
 }


版权声明:本文为博主原创文章,未经博主允许不得转载。

POJ1018

http://poj.org/problem?id=1018这题目有点难理解... 大意是说,现在要买一整套通信设备(由好几个部件组成),给你T组测试数据,每一组都有N种部件,而每一种部件备又有m个生...
  • fengsigaoju
  • fengsigaoju
  • 2015年11月20日 15:30
  • 174

CCF NOI1018 打电话

问题链接:CCF NOI1018 打电话。 时间限制: 1000 ms  空间限制: 262144 KB 题目描述   某市的IC卡电话计费标准如下:首次为0.5元/3分钟(不足3分钟按3...
  • tigerisland45
  • tigerisland45
  • 2017年04月20日 21:38
  • 468

POJ 1018 Communication System(贪心+优化)

题目描述:有n种仪器,第i种仪器有m_i个供应商,不同供应商提供的同一种仪器有不同的带宽(B)和价格(p), n种仪器总带宽为所有仪器带宽最小值。要求从每种仪器的供应商中选一个,使得最终总带宽除以总价...
  • szhouan
  • szhouan
  • 2016年11月29日 19:16
  • 186

POJ1018解题报告

http://poj.org/problem?id=1018题目比较拗口,不过简单的理解就是。用户给定n行设备,这n行设备有m对,分别对应这个设备的带宽和价格。要求从这n行设备中每行选一个设备,使得B...
  • rongyongfeikai2
  • rongyongfeikai2
  • 2011年04月06日 20:39
  • 2310

poj 3971 Scales (dp)

题目大意: 给你一个重量为w的物品 和 重量分别为 1  2  4  ... 2^(n-1) 的砝码,问 一共有多少种方式使得天平平衡。 解题思路: 让我们求的 就是 w + x = y 并且 ...
  • u011561033
  • u011561033
  • 2015年05月13日 08:44
  • 513

UVALive5583 UVA562 Dividing coins【0/1背包+DP】

It’s commonly known that the Dutch have invented copper-wire. Two Dutch men were fighting overa nick...
  • tigerisland45
  • tigerisland45
  • 2016年08月13日 11:32
  • 471

POJ1018Communication System题解动态规划DP

Communication SystemTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 12607 Accepted: 4377De...
  • power721
  • power721
  • 2010年08月06日 16:15
  • 911

poj1018(1)

其实这道题我也没有完全的弄明白,糊里糊涂就ac了  本文问题部分参考http://blog.csdn.net/lyy289065406/article/details/6676781 ...
  • caihongshijie6
  • caihongshijie6
  • 2013年04月24日 22:01
  • 832

android手机屏幕分辨率获取异常

转载1: TextView tv=(TextView)findViewById(R.id.tv);  DisplayMetrics dm=new DisplayMetrics();  getWi...
  • Timwolee
  • Timwolee
  • 2011年11月04日 23:14
  • 3528

任务选择问题(贪心)

原文地址 http://www.acmerblog.com/greedy-activity-selection-5199.html 贪心算法又称贪婪算法是指,在对问题求解时,总是做出在当前看来...
  • a2459956664
  • a2459956664
  • 2015年12月20日 08:31
  • 391
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ1018
举报原因:
原因补充:

(最多只允许输入30个字)