POJ_2586_Y2K Accounting Bug(贪心.分情况讨论)

关键是读懂题意,题意就是说:你输入这个公司每月的的盈利金额s和每月的亏损金额d

,已知每个月亏损和盈利都是同样的金额。它没5个月统计一次数据1-5,2-6,3-7.......总共统计了

8次,在每次统计中保证这五个月内都是亏损的,然后计算满足这种情况下一年的最大盈利。

方法:简单枚举,五个月中有4个月是盈利的,那么必须满足4*s<d;

即:ssssd.ssssd.ss;那么盈利情况便是10*s-2*d;不必考虑太多你d>4*s的话d肯定是大于

3*s的。 

         ssssd,ssssd,ss    d>4s     赢利10个月    10s-2d
         sssdd,sssdd,ss    2d>3s    赢利8个月     8s-4d
         ssddd,ssddd,ss    3d>2s    赢利6个月     6s-6d 
         sdddd,sdddd,sd    4d>s     赢利3个月     3s-9d
         ddddd,ddddd,dd    4d<s     无赢利
需要注意的是:这些判断的顺序不能改变,这样说吧,判断条件保证了5个月是亏损的,而顺序是保证的找到盈利最大的。
 1 # include <stdio.h>
 2 int main()
 3 {
 4     int k,s,d;
 5     while(scanf("%d%d",&s,&d) != EOF)
 6     {
 7         if(d>4*s)
 8             k=10*s-2*d;
 9         else if(2*d>3*s)
10             k=8*s-4*d;
11         else if(3*d>2*s)
12             k=6*s-6*d;
13         else if(4*d>s)
14             k=3*s-9*d;
15         else 
16             k=-1;
17         if(k<0)
18             printf("Deficit\n");
19         else
20             printf("%d\n",k);
21     }
22     return 0;
23 }
View Code

 

 

 

 

posted on 2013-08-08 10:07  随风浪子的博客  阅读(119)  评论(0编辑  收藏  举报

导航