///2014.3.3
///poj2586
/**
*题目大意是一个公司在12个月中,或固定盈余s,或固定亏损d.
*但记不得哪些月盈余,哪些月亏损,
*只能记得连续5个月的代数和总是亏损(<0为亏损),
*问全年是否可能盈利,若可能,输出可能最大盈利金额,
*否则输出“Deficit”.
*思路:
*题意说连续的五个月的代数总和一定是亏损,则可以根据 s 和 d
*求出连续的五个月至少有 dInFive 个月是亏损的
*例如连续的五个月至少有 2 个月亏损(dInFive=2)
*则,1-5月中4月和5月设为亏损,接着检查下一个连续的五个月(2-6月)
*从尾部开始将其设成一共有2个月亏损
*最后可以求出12个月中一共至少要有几个月亏损
*/
#include <cstdio>
int s,d;
int dInFive; ///表示在连续五个月中最少有几个月份亏损
int month[6] = {0,2,4,6,9,12};
///month[i]表示 i 为 dInFive时,12个月中的最少亏损月份数,笔算即可求出
int S;
void init( )
{
for(dInFive=0 ; dInFive*d<(5-dInFive)*s ; dInFive++); ///求出dInFive
S = s*(12-month[dInFive]) - d*month[dInFive];
}
int main( )
{
// freopen("in","r",stdin);
// freopen("out","w",stdout);
while( scanf("%d%d",&s,&d)!=EOF ){
init();
if( S>0 )
printf("%d\n",S);
else
printf("Deficit\n");
}
return 0;
}
poj2586 Y2K Accounting Bug 贪心
最新推荐文章于 2014-07-25 21:06:20 发布