题目链接:http://poj.org/problem?id=2586
这个题最麻烦的就是读题了,这么长的题目,读了好久,大意就是说一个公司,每个月都只能盈利s或者亏损d,每5个月统计账目,每次都是亏损,但一年可以是亏损也可以盈利,如果可以盈利,求最大值,不能则打印“Deficit”。
开始的时候我想的是每五个月一统计,就先求前五个月,然后依次求第六,第七个月等等。
其中前五个月先让前n个月盈利,后n - 5个月亏损,然后递推。
发现好麻烦,而且2 - 6月考虑时还要讨论前面5个月甚至要改变前5个月的值。
SJ,提出来,就这12个月,加上刚才的贪心策略,总共就5种情况,遍历就好啦,每个情况试试,结果就出来了。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
int s,d;
while (~scanf ("%d%d",&s,&d))
{
int i;
for (i = 0;i < 5;i++)
if ((i + 1) * s - (4 - i) * d >= 0)
break;
int ans;
if (i >= 2)
ans = (i * s - (5 - i) * d) * 2 + 2 * s;
else if (i == 1)
ans = s * 3 - 9 * d;
else
ans = -12 * d;
if (ans < 0)
puts ("Deficit");
else
printf ("%d\n",ans);
}
return 0;
}