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 }

 

你可能感兴趣的:(count)