POJ 2586 Y2K Accounting Bug(贪心)

题目链接

题意真纠结啊。神马盈余,负债的。。。差不多看懂样例了,是反正一年12个月可能赚钱,可能赔钱。。。

题意:1-5月, 2-6月....8-12月,做8次统计,在统计内的5个月,整体上都是赔钱的。求这一年可能盈利多少。

第一想法枚举,2^12次方,然后TLE,换了乱搞办法,和暴力的对拍,讨论5个月,盈利最多的情况下,依旧赔钱,乱搞一下就行。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <algorithm>
 6 using namespace std;
 7 #define N -100000000
 8 int main()
 9 {
10     int i,j,s,d,ans,k,sum;
11     int o[13];
12     while(scanf("%d%d",&s,&d)!=EOF)
13     {
14        ans = N;
15        /*for(i = 1;i < (1<<12);i ++)//暴力的方法
16        {
17            memset(o,0,sizeof(o));
18            for(j = 0;j <= 11;j ++)
19            {
20                if(i&(1<<j))
21                o[j+1] = 1;
22            }
23            for(j = 1;j <= 8;j ++)
24            {
25                sum = 0;
26                for(k = j;k <= j+4;k ++)
27                {
28                    if(o[k])
29                    sum += s;
30                    else
31                    sum -= d;
32                }
33                if(sum >= 0) break;
34            }
35            if(j == 9)
36            {
37                sum = 0;
38                for(k = 1;k <= 12;k ++)
39                {
40                    if(o[k])
41                    sum += s;
42                    else
43                    sum -= d;
44                }
45                if(ans < sum&&sum > 0)
46                ans = sum;
47            }
48        }
49        */
50        for(i = 1;i <= 4;i ++)
51        {
52            if(i == 1)
53            {
54                if(4*s-d < 0)
55                {
56                    sum = 10*s - 2*d;
57                    if(ans < sum&&sum > 0)
58                    ans = sum;
59                }
60            }
61            else if(i == 2)
62            {
63                if(3*s-2*d < 0)
64                {
65                    sum = 8*s - 4*d;
66                    if(ans < sum&&sum > 0)
67                    ans = sum;
68                }
69            }
70            else if(i == 3)
71            {
72                if(2*s-3*d < 0)
73                {
74                    sum = 6*s - 6*d;
75                    if(ans < sum&&sum > 0)
76                    ans = sum;
77                }
78            }
79            else if(i == 4)
80            {
81                if(s-4*d < 0)
82                {
83                    sum = 3*s - 9*d;
84                    if(ans < sum&&sum > 0)
85                    ans = sum;
86                }
87            }
88        }
89        if(ans == N)
90        printf("Deficit\n");
91        else
92        printf("%d\n",ans);
93     }
94     return 0;
95 }

 

posted @ 2012-11-14 16:14  Naix_x  阅读(168)  评论(0编辑  收藏  举报