贪心算法—Problem N

来源:互联网 发布:相对湿度算法 编辑:程序博客网 时间:2024/05/02 08:16

贪心算法—Problem N

题意

某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利s,如果亏空则亏空d。公司每五个月进行一次统计,全年共统计8次(1-5、2-6、3-7、4-8、5-9、6-10、7-11、8-12),已知这8次统计的结果全部是亏空(盈利-亏空<0)。题目给出每月的S和D,判断全年是否能盈利,如果能则求出盈利的最大值,如果不能盈利则输出Deficit。

解题思路

一共统计了8次,8次都是亏空的,要保证尽量盈利。所以把亏空放到5月份,这时有一个月亏空四个月盈余,如果不能保证1-5月总额亏空,再在4月亏空,这时两个月亏空三个月盈余···以此类推,直到1-5月亏空,这时全年必亏空。6-10月和1-5月相同,复制即可。最后根据输入情况判断输出最大盈余或者Deficit。

感想

刚开始看不懂题意,借助翻译工具仔细查看后才明白题意,分析一下,和数学题差不多,只是加入了贪心思想,使问题看起来复杂了些。

AC代码

#include<iostream>

using namespace std;

int main()

{

   int  s,d,res; 

   while(cin>>s>>d) 

   { 

       if (d > 4 * s)  res = 10 * s -2 * d; 

       else if (2 * d > 3 * s)  res =8 * s - 4 * d; 

       else if (3 * d > 2 * s)  res =6 * s - 6 * d; 

       else if (4 * d > s)  res = 3 *s - 9 * d; 

       else  res = -12 * d;           

       if (res <= 0)  cout<<"Deficit"<<endl; 

       else  cout<<res<<endl;; 

   } 

   return 0;    

}

 

 

 

 

 

 

 

0 0
原创粉丝点击