最简单的贪心

原创 2015年11月20日 00:09:35
//失败的方法
#include <iostream>
#include <string.h>
#include <iomanip>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
int main(int argc, char** argv) {
     int M,N;
     while(cin>>M>>N)
     {
          if(M==-1 && N==-1)
          break;
          {     double j[1001];
               double f[1001];
               double x[1001];
               for(int i=0; i<N; i++)
               {
                    cin>>j[i];
                    cin>>f[i];
                                       
               }
               for(int k=0; k<N; k++)    //性价比
               {
                    x[k] = j[k] / f[k];
               }
              
               for(int i=0; i<N; i++)   //性价比排序
               {
                    for(int k=i+1; k<N; k++)
                    {
                         if(x[i]<x[k])
                         {
                              double temp = x[i];
                              x[i] = x[k];
                              x[k] = temp;
                              temp = j[i];
                              j[i] = j[k];
                              j[k] = temp;
                              temp = f[i];
                              f[i] = f[k];
                              f[k] = temp;
                             
                         }
                        
                    }
                   
               }
              
              
               double sum = 0;
               for(int i=0; i<N; i++)      //循环嵌套效率太低;
               {
                    if(M==0)
                    break;
                   
                    for(int k=0; k<f[i]; k++)
                    {
                         if(M==0)
                         break;
                         sum = sum + x[i];
                         M--;                                                                     
                    }
               }
              
                
               cout<<setiosflags(ios::fixed)<<setprecision(3)<<sum<<endl;
              
          }
         
     }
    
     return 0;
}



正确版:
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct node
{
     double j,f,p; //p是性价比:j/f
}Node[10000];

int cmp(node x,node y)
{
     return x.p>y.p;
}
int main(int argc, char** argv) {
     int m,n;
     while(scanf("%d%d",&n,&m) && (m!=-1||n!=-1))
     {
          double sum = 0,max = 0;
          for(int i=0; i<m; i++)
          {
               cin>>Node[i].j>>Node[i].f ;  //     scanf("%lf%lf",&node[i].j,&node[i].f);
               Node[i].p = Node[i].j / Node[i].f;
          }
          sort(Node,Node+m,cmp);
          //性价比排完序之后:
          for(int i=0; i<m; i++)   //猫食的分配是关键
          {
               if(n>Node[i].f)
               {
                    sum += Node[i].j;
                    n-=Node[i].f;
               }
               else
               {
                    sum+=Node[i].p * n;
                    break;
               }
          }
          printf("%.3lf\n",sum);  //控制输出小数位数
         
     }

    
     return 0;
}
      

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

相关文章推荐

简单的DP运用+贪心算法

  • 2006-02-23 09:05
  • 484B
  • 下载

milk<uscao>1.3 -<最简单的贪心>

一遍过.简单贪心. 题目: Section1.3 ★Mixing Milk 混合牛奶 牛奶包装是一个如此低利润的生意,所以尽可能低的控制初级产品(牛奶)的价格变的十分重要. 请帮助快乐的牛奶...

【HDU4313】Matrix 多校 解题报告+AC代码+思路+算法正确性证明,此为Kruskal贪心恶心版本,非自虐倾向慎入!建议想找解题报告的童鞋看简单版本的,这个我写给自己【目标达成 0.2%】

#include #include #include #include using namespace std; /** 【警告】这个恶心版本是我写给自己看的,关于解题报告,还是请移...

Gym 100703K Word order 简单贪心

K. Word order time limit per test 2 seconds memory limit per test 256 megabytes inp...

POJ 1328 简单贪心算法

貌似本题数据类型也挺重要的,没有具体测试了,就直接用double了,一开始存x, y的时候用的是int,结果wa了,可是之后改成了double还wa,才发现其实是贪心的时候排序出错了。。。。   ...

从两道简单HDU题来了解贪心思想

呵呵,貌似学校OJ上的水题已经刷的差不多了。     从两道简单的贪心题开始,觉得自己要开始学习些新算法姿势了。     那这一篇blog就说说简单的贪心吧。 第一题 世界杯来了,球迷的节日也来...

Codeforces Round #199 (Div. 2) A ( 简单贪心 )

题目链接:点击打开链接 先让我痛哭一下,居然跪在了水题上。。。。还是道水的贪心。。。。T^T。。。 找规律找规律。。。。cf都是思维题,记住了!!!! 大牛请自动跳过这篇博客,我是写给自己看的。。...

Codeforces Round #169 (Div. 2)---C. Little Girl and Maximum Sum(简单贪心)

The little girl loves the problems on array queries very much.One day she came across a rather well-...

【ZOJ3919 2016年浙大2月月赛E】【简单计算几何 贪心】Ellipse 椭圆内切圆外切平行四边形最大最小面积

Ellipse Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge There i...

poj3617_简单贪心

Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18790   Accepted: 5...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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