HDUOJ-1009 FatMouse' Trade(贪心)

采用贪心的思考问题方法

即“做出的是在某种意义上的局部最优解”,对于本题来说,局部最优解就是整体最优解,因此采用贪心法。

解题结构

· 一个结构体来存储每个房间的状态以及性价比

· 调用C++的algorithm库的 sort( LengthFirstAddress , LengthFirstAddress+Length , Compare ) 函数来进行排序,如果没有Compare则默认从小到大排序

· Compare结构为bool Compare(Type a,Type b){ return a>b; }
(a > b为降序,a < b为升序,Type为a,b的数据类型)

解题核心

状态1:老鼠剩余的猫粮可以完全买下性价比最高的房子的豆子,那么买下,并更新自己持有的猫粮数,统计买到手的豆子

状态2:剩余的猫粮不足以买下性价比最高的房子的豆子,那么按百分比来买,并更新自己持有的猫粮数,统计买到手的豆子
,(此时已经没"钱"了,结束判断,输出结果)

Accept代码

/*
* Created by zsdostar in 2016/4/30
*/
#include <iostream>
#include<algorithm>
using namespace std;
struct greedheart
{
  double value;
  double JavaBean;
  double CatFood;
};
bool compare(greedheart room1,greedheart room2)
{
  return room1.value>room2.value;
}
int main()
{
  int m,n;
  struct greedheart room[10010];
  while((cin>>m>>n)&&(m!=-1)&&(n!=-1))
  {
      double thentotal=m;
      double sum=0;
      for(int i=0;i<n;i++)
      {
          cin>> room[i].JavaBean >> room[i].CatFood;
          room[i].value = room[i].JavaBean / room[i].CatFood;
      }
      sort(room,room+n,compare);
      for(int i=0;i<n;i++)
      {
          if(thentotal < room[i].CatFood)
          {
            sum += (thentotal/room[i].CatFood)*room[i].JavaBean;
            thentotal -= room[i].CatFood;
            break;
          }
          else if(thentotal >= room[i].CatFood)
          {
              sum += room[i].JavaBean;
              thentotal -= room[i].CatFood;
          }
      }
      printf("%.3lf\n",sum);
  }
}

(感觉英文才是ACM最大的难点。。看了TinyJian的翻译才看明白题意。。)
(TinyJian的博客:http://blog.csdn.net/TinyJian/article/details/48738693

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 贪心算法 贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上...
    fredal阅读 9,302评论 3 52
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 10,081评论 0 23
  • 1. 关于诊断X线机准直器的作用,错误的是()。 (6.0 分) A. 显示照射野 B. 显示中心线 C. 屏蔽多...
    我们村我最帅阅读 10,861评论 0 5
  • 自从做了妈妈,我就很关注幼儿教育。尤其是亲子教育方面,我最近读了一本书《蒙特梭利的早教全书》。 在为人父母方面,蒙...
    087d53ac49c8阅读 113评论 2 0
  • 正月初七,携子走鸡鸣大道,为先生祈福,应和先生试作小诗一首。 巳午信笺收在申, 梓里欢笑有先生。 遥望吴舠过驿桥,...
    叶一碧阅读 464评论 4 16